删除每 3 行和第 5 行,但不删除 sed 中的第 15 行

  • 本文关键字:删除 sed bash sed
  • 更新时间 :
  • 英文 :


我正在尝试寻找一种方法来删除每 3 行和第 5 行,但不删除第 15 行使用 sed,但事情是这样的:你不能使用 ~ 方式 (GNU)。它必须是这样的

sed 'n;n;d' test

但是我不知道如何将这3个...

示例输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

示例输出:

1
2
4
7
8
11
13
14
15

它需要在sed中,没有awk或perl

awk 命令对于此要求更容易理解:

awk 'NR==15 || (NR%3 && NR%5)' file
1
2
4
7
8
11
13
14
15

呃:

$ seq 15 | sed -n 'p;n;p;n;n;p;n;n;n;p;n;p;n;n;n;p;n;n;p;n;p;n;p'
1
2
4
7
8
11
13
14
15

这可能对你有用(GNU sed):

sed '0~15b;0~3d;0~5d' file

使用 gnu sed:

sed '15p;0~3d;0~5d' test

以下是上述 awk/sed 命令的测试结果:

seq 99 |awk 'NR==15 || (NR%3 && NR%5)' > anubhava.txt
seq 99 |sed -n 'p;n;p;n;n;p;n;n;n;p;n;p;n;n;n;p;n;n;p;n;p;n;p' > glenn.jackman.txt
seq 99 |sed '0~15b;0~3d;0~5d'  > potong.txt
seq 99 |sed '15p;0~3d;0~5d' > bmw.txt
$diff anubhava.txt glenn.jackman.txt
17a18
> 30
25a27
> 45
33a36
> 60
41a45
> 75
49a54
> 90
$ diff -q anubhava.txt potong.txt
Files anubhava.txt and potong.txt differ   # same problem that can't delete line 30, 45, 60, etc.
$ diff -q anubhava.txt bmw.txt
$

相关内容

  • 没有找到相关文章

最新更新