我有2个文件,其中一个包含: FILE1.TXT
632121S0 126.78.202.250 1
131145S0 126.178.20.250 1
另一个包含:file2.txt
632121S0 126.78.202.250 OBS
131145S0 126.178.20.250 OBS
313359S2 126.137.37.250 OBS
我想最终得到第三个文件,其中包含:
632121S0 126.78.202.250 OBS
131145S0 126.178.20.250 OBS
仅在两个文件中以相同字符串开头的行。我无法记住该怎么做。我尝试了几个grep,egrep并找到,我仍然无法正常使用它... 你能帮忙吗?
答案 0 :(得分:3)
你可以使用这个awk:
$ awk 'FNR==NR {a[$1]; next} $1 in a' f1 f2
632121S0 126.78.202.250 OBS
131145S0 126.178.20.250 OBS
它基于two file processing的想法,通过循环遍历文件:
a
中。a
中。如果是,则打印该行。答案 1 :(得分:1)
要使用grep执行此操作,您需要使用process substitution:
grep -f <(cut -d' ' -f1 file1.txt) file2.txt
grep -f
使用文件作为在file2中搜索的模式列表。在这种情况下,不使用file1进行转换,而是使用进程替换来仅输出文件的第一列。
答案 2 :(得分:1)