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

Bash 如何根据文件行的随机列表从文件中删除行,bash,sed,Bash,Sed,我有一个大的txt文件(长列表)和另一个txt文件,其中列出了我想从中删除的行(短列表) 我已经找到了一种方法,可以对一些特定行执行此操作: sed -e '648d;649d' long_list 但是我有一个要删除的行列表,有几百行长,我想从文件中输入。有人能帮忙吗?使用awk: awk 'NR==FNR{a[$1];next}!(FNR in a)' short_list long_list 如果当前文件FNR的记录编号不是数组a的一部分,并且填充了短列表的内容,则打印行数是,很抱歉重

我有一个大的txt文件(长列表)和另一个txt文件,其中列出了我想从中删除的行(短列表)

我已经找到了一种方法,可以对一些特定行执行此操作:

sed -e '648d;649d' long_list

但是我有一个要删除的行列表,有几百行长,我想从文件中输入。有人能帮忙吗?

使用
awk

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

如果当前文件
FNR
的记录编号不是数组
a
的一部分,并且填充了
短列表的内容,则打印行数

是,很抱歉重复。一旦我删除了-i选项并将输出保存到新的txt文件中,我现在就得到了我想要的东西。谢谢
awk 'NR==FNR{a[$1];next}!(FNR in a)' short_list long_list