bash – “读LINE时”和grep问题
我有两个文件.
file1.txt: Afghans Africans Alaskans ... 其中file2.txt包含网页上wget的输出,所以这是一个很大的混乱,但确实包含了第一个列表中的许多单词. Bashscript: cat file1.txt | while read LINE; do grep $LINE file2.txt; done 这没有按预期工作.我想知道为什么,所以我在循环中回显了$LINE变量并添加了一个睡眠1,所以我可以看到发生了什么: cat file1.txt | while read LINE; do echo $LINE; sleep 1; grep $LINE file2.txt; done 终端中的输出看起来像这样:
所以你可以看到它终于找到了“亚洲”这个词.但为什么会说:
? 有什么奇怪的事情或我在这里错过了什么吗? 解决方法
@ OP,首先,按照建议使用dos2unix.然后使用awk
awk 'FNR==NR{a[$1];next}{ for(i=1;i<=NF;i++){ if($i in a) {print $i} } } ' file1 file2_wget 注意:在循环中使用while循环和grep效率不高,因为对于每次迭代,都需要在file2上调用grep. @OP,粗略解释: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |