如何删除文本文件中的每个第X行?

Ing*_*ngo 25 bash text

考虑带有科学数据的文本文件,例如:

5.787037037037037063e-02 2.048402977658663748e-01
1.157407407407407413e-01 4.021264347118673754e-01
1.736111111111111049e-01 5.782032163406526371e-01
Run Code Online (Sandbox Code Playgroud)

如何轻松删除,例如,每隔一行,或文件中每10行中的9行?例如是否可以使用bash脚本?

背景:文件非常大,但我需要更少的数据来绘制.请注意,我使用的是Ubuntu/Linux.

jor*_*anm 58

使用awk很容易实现.

删除所有其他行:

awk 'NR % 2 == 0' file > newfile
Run Code Online (Sandbox Code Playgroud)

删除每10行:

awk 'NR % 10 != 0' file > newfile
Run Code Online (Sandbox Code Playgroud)

awk中的NR变量是行号.awk中{}以外的任何内容都是有条件的,默认操作是打印.


Sor*_*gal 6

perl怎么样?

perl -n -e '$.%10==0&&print'       # print every 10th line
Run Code Online (Sandbox Code Playgroud)

  • 不.他说"如何轻松地**删除**,例如,每隔一行,或者**文件中每10个**行中的**?",删除10行中的每9行意味着每10行打印一次.如你所说,一旦解决方案发布,它很容易适应,所以我没有打扰纠正造成同样错误的其他海报. (2认同)