如何使用sed删除每个奇数行?
remove
keep
remove
keep
remove
...
Run Code Online (Sandbox Code Playgroud)
gho*_*g74 68
GNU sed有一个合适的寻址模式:
sed -n '1~2!p' file
Run Code Online (Sandbox Code Playgroud)
这意味着,从第1行开始,在步骤2中,打印所有其他行.
等效地,您可以删除-n和删除匹配的行:
sed '1~2d'
Run Code Online (Sandbox Code Playgroud)
它也可以使用awk完成:
awk 'NR%2==0' file
Run Code Online (Sandbox Code Playgroud)
(每当行号为2的倍数时,打印行)
Pau*_*ce. 36
这是我能想到的最短的:
sed -n 'g;n;p' file
Run Code Online (Sandbox Code Playgroud)
它应该适用于非GNU版本sed(以及GNU sed).
小智 6
这适用于sed的GNU和BSD(mac)版本:
要删除奇数行(打印偶数行):
sed -n ’n;p’ file
Run Code Online (Sandbox Code Playgroud)
可能看起来有些混乱,所以下面是逐步进行的操作:
要删除偶数行(打印奇数行):
sed -n ‘p;n’ file
Run Code Online (Sandbox Code Playgroud)
这是算法背后发生的事情:
Perl解决方案:
perl -ne 'print if $. % 2 == 0' file
Run Code Online (Sandbox Code Playgroud)
$. 是行号
| 归档时间: |
|
| 查看次数: |
49581 次 |
| 最近记录: |