我有一个看起来像这样的文件:
ReactDOM.render((
<Router history = {browserHistory}>
<Route path = "/" component = {App}>
<IndexRoute component = {Home} />
<Route path = "home" component = {Home} />
<Route path = "about" component = {About} />
<Route path = "contact" component = {Contact} />
</Route>
</Router>
), document.getElementById('app'))
更多说明:
我想识别列1中的值在2个文件之间不同的行。即在我的例子中,这些行1和4。我可以使用diff file1.txt和file2.txt来做到这一点。
但是,我想获得这样的结束文件(见下文)。实际上,我的目标是使用sed替换另一个文件的名称,以便两个文件完全匹配。
file1.txt
rs13339951:45007956:T:C 45007956
rs2838331 45026728
rs5647 12335
rs4687576 5353566
file2.txt
rs13339951 45007956
rs2838331 45026728
rs5647 12335
rs4687576:ATCFHF 5353566
答案 0 :(得分:1)
awk非常适合这个
awk 'FNR==NR {a[$2]=$1; next} a[$2]!=$1 {print a[$2] " " $1}' file1 file2
输出
rs13339951:45007956:T:C rs13339951
rs4687576 rs4687576:ATCFHF
我们将两个文件传递给awk。它将连续传递给他们。
FNR==NR {.... next} { ... }
这个&#34;技巧&#34;对第一个文件执行第一个操作,对第二个文件执行第二个操作。
a[$2]=$1
键值查找表。第二列是关键的第一列是值。我们在读取第一个文件时构建此查找表。
a[$2]!=$1 {print a[$2] " " $1}
在迭代第二个文件时,将当前第一列与查找表中的值进行比较。如果它们不匹配则打印所需的输出。