假设一个包含40行数据的文本文件.如何使用bash脚本删除第3行到第10行,第13行到第20行,第23行到第30行,第33行到第40行?
我已经知道如何删除第3行到第10行了sed,但是我想知道是否有办法只使用一个命令行来完成所有删除操作.我可以使用,for loop但问题是,每次循环迭代时,行号将被更改,并且需要对要删除的行号进行一些额外的计算.
这是一个awk oneliner,无论你的文件有40行还是40k行,都能满足你的需求:
awk 'NR~/[12]$/' file
Run Code Online (Sandbox Code Playgroud)
例如,有50行:
kent$ seq 50|awk 'NR~/[12]$/'
1
2
11
12
21
22
31
32
41
42
Run Code Online (Sandbox Code Playgroud)