我有一个带数字的文件
20
18
21
16
14
30
40
24
,我需要输出四个文件,行打印的间隔为4 所以我们有1,5,9行...
20
14
然后行2,6,10 ...
18
30
然后3,7,11 ...
21
40
然后是4,8,12 ...
16
24
我确实尝试了下面的代码,但没有使我控制起始行
awk 'NR % 4 == 0'
答案 0 :(得分:3)
您一次可以执行以下操作:
awk '{print > ("file" (NR%4))}' inputfile
这会将输出发送到文件file0
,file1
,file2
和file3
答案 1 :(得分:1)
您可以使用以下awk
命令:
awk -v n=1 'NR%4 == n%4' file
20
14
awk -v n=2 'NR%4 == n%4' file
18
30
awk -v n=3 'NR%4 == n%4' file
21
40
awk -v n=4 'NR%4 == n%4' file
16
24
答案 2 :(得分:0)
恕我直言awk
是最好的解决方案。您可以使用sed
:
用seq 12
生成的输入文件:
for ((i=1;i<5; i++)); do
sed -n $i~4w$i.out <(seq 12)
done
这里w$i.out
写入文件$ i.out。
答案 3 :(得分:0)
这可能对您有用(GNU sed):
sed -ne '1~4w file1' -e '2~4w file2' -e '3~4w file3' -e '4~4w file4' file