Text 如何保留某些行号并删除其余行号

Text 如何保留某些行号并删除其余行号,text,sed,text-processing,line-numbers,Text,Sed,Text Processing,Line Numbers,使用sed,我知道如何删除某些行号,如 sed -i.bak -e '6d;8d;15d;' file 我怎样才能达到相反的效果呢。我想保留这些行,删除其余的。我想在适当的地方这样做,因为我有巨大的文件,我会把它作为一个更大的脚本的一部分。我仍在保留一个备份,因为我不想弄乱我的原始数据集。停止打印sed,然后在哪里打印行如何 sed -i.bak -n '6p;8p;15p;' Input_file 从man sed: RavinderSingh13的解决方案很好,使用带有-n标志的sed来

使用sed,我知道如何删除某些行号,如

sed -i.bak -e '6d;8d;15d;' file

我怎样才能达到相反的效果呢。我想保留这些行,删除其余的。我想在适当的地方这样做,因为我有巨大的文件,我会把它作为一个更大的脚本的一部分。我仍在保留一个备份,因为我不想弄乱我的原始数据集。

停止打印
sed
,然后在哪里打印行如何

sed -i.bak -n '6p;8p;15p;' Input_file
man sed


RavinderSingh13的解决方案很好,使用带有
-n
标志的
sed
来抑制图案空间的自动打印。如果不想使用该标志,可以使用标签和sed goto语句:

sed '6b;8b;15b;d;' file
这基本上说明:

  • 6b
    如果我在第6行,分支到末尾
  • 8b
    如果我在第8行,分支到末尾
  • 15b
    如果我在第15行,分支到最后
  • d
    如果我还没有分支,请删除模式空间并开始下一个循环
在这种情况下,与使用
-n
标志相反,图案空间总是在循环结束时打印

如果要使用
awk
,可以执行以下操作:

awk '(FNR==6) || (FNR==8) || (FNR==15)' file
此外:


具体来说,第二个答案包含了您的确切用例。我正在寻找一种合适的方法。但这在很大程度上是吻合的。谢谢。LOL由于其长度和内容,此答案被标记为低质量。。我觉得还可以。也许可以解释一下?
awk '(FNR==6) || (FNR==8) || (FNR==15)' file
sed -e '6!{8!{15!d;};}'