我的文件有多组行。每组有 4 行。第 1-4 行是第 1 组。第 5-8 行是第 2 组,依此类推。我需要打印每组的前两行,即第 1 行和第 2 行、第 5 行和第 6 行,依此类推。
文件内容:
line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
..
line n
答案1
sed -n '1~4p;2~4p'
1~4p
从第一行开始,每 4 行匹配一次:
line 1
line 5
line 9
…
2~4p
从第二行开始,每 4 行匹配一次:
line 2
line 6
line 10
…
当一起使用时,它们可以达到您想要的效果。
答案2
我不认为sed
这是这里选择的工具 —— 为什么不直接用 shell 脚本来写呢?
cat /path/to/infile | while true; do read l || break ; echo "$l" ; read l || break ; echo "$l" ; read l || break ; read l || break ; done > /path/to/outfile