如何根据随机的行列表文件从文件中删除行

时间:2018-06-11 14:42:36

标签: bash sed

我有一个大的txt文件(long_list)和另一个txt文件,列出了我想从中删除的行(short_list)。

#long list
seq 10000 > long_list

#rows to delete
for i in `seq 30`; do echo $(($RANDOM % 10000)); done > short_list

我找到了一种方法来为几个特定的​​行执行此操作:

sed -e '648d;649d' long_list

但我有一个要删除的行列表,这些行长达数百行,我想从文件中输入。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

使用awk

awk 'NR==FNR{a[$1];next}!(FNR in a)' short_list long_list

如果当前文件FNR的记录数不属于数组a填充short_list的内容

,则会打印行