我有两个名为file1和file2的文件。我想删除file1中不在file2中的行。
文件1
rana 209 214 6 18 37 3 6.2
bashi 230 241 12 30 88 2.5 7.3
amir 245 250 6 14 29 2.3 4.8
joswa 190 195 6 15 45 2.5 7.5
edison 213 218 6 16 40 2.7 6.7
file2的
bashi
edison
期望的输出
bashi 230 241 12 30 88 2.5 7.3
edison 213 218 6 16 40 2.7 6.7
如何使用awk或sed执行此操作?
答案 0 :(得分:2)
grep
是你的朋友:
$ grep -wFf f2 f1
bashi 230 241 12 30 88 2.5 7.3
edison 213 218 6 16 40 2.7 6.7
w
匹配单词。F
执行固定匹配(无正则表达式)。f
使用其他文件来获取模式。答案 1 :(得分:0)
awk 'NR==FNR{a[$1]=1;next} $1 in a {print}' file2 file1
输出:
bashi 230 241 12 30 88 2.5 7.3
edison 213 218 6 16 40 2.7 6.7
读取file2
并创建一个由第一个字段索引的数组,然后读取file1
,如果第一个字段在数组中,则打印该行。