Jag*_*Jom 5 shell bash sed awk
就像
如果我有:
1st line (keep)
2nd line (keep)
3rd line (keep)
4rth lines (delete)
5th (del)
6th (keep)
7nth (keep)
8th lines (keep)
9th (del)
10th (del)
11th (keep)
12th (keep)
13th (keep)
14th (del)
15th (del)
Run Code Online (Sandbox Code Playgroud)
等等....
Joh*_*024 13
尝试:
awk '(NR-1)%5<3' file
Run Code Online (Sandbox Code Playgroud)
例如:
$ awk '(NR-1)%5<3' file
1st line (keep)
2nd line (keep)
3rd line (keep)
6th (keep)
7nth (keep)
8th lines (keep)
11th (keep)
12th (keep)
13th (keep)
Run Code Online (Sandbox Code Playgroud)
该命令(NR-1)%5<3
告诉awk
打印任何(NR-1)%5<3
为真的行。In awk
,NR
是行号,第一行算作1
。对于文件中的每五行,该语句对于前三行都是正确的。
一个简单的命令是:
awk '{if((NR-1) % 5<=2){print $0}}' file
Run Code Online (Sandbox Code Playgroud)
它只会按 5 行的顺序打印前 3 行。因为(NR-1)%5
会给出类似的输出0 1 2 3 4
,并且前 3 行小于等于 2。所以它只会打印它们。
我有包含内容的文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Run Code Online (Sandbox Code Playgroud)
输出是:
1
2
3
6
7
8
11
12
13
Run Code Online (Sandbox Code Playgroud)
或者按照评论中的建议,您可以使用:
awk '(NR - 1) % 5 <= 2' file
Run Code Online (Sandbox Code Playgroud)
基本上,你想要像 awk 中的“Fizz-Buzz”之类的东西......
awk '{ if (i++%5 < 3) print $0;}'
Run Code Online (Sandbox Code Playgroud)
为了展示这个作品......
for x in 1 2 3 4 5 6 7 8 9 10 ; do echo $x; done |
awk '{ if (i++%5 < 3) print $0;}'
Run Code Online (Sandbox Code Playgroud)
当您的文件被命名为“mybigfile.csv”时,
awk '{ if (i++%5 < 3) print $0;}' < mybigfile.csv > mybigfile-123.csv
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1707 次 |
最近记录: |