我正在尝试使用sed来寻找删除每个第3行和第5行而不是第15行的方法,但这就是事情:你不能使用〜-way(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
答案 0 :(得分:3)
awk命令更容易理解:
awk 'NR==15 || (NR%3 && NR%5)' file
1
2
4
7
8
11
13
14
15
答案 1 :(得分:1)
啊:
$ 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
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed '0~15b;0~3d;0~5d' file
答案 3 :(得分:0)
使用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
$