如何打印文件中的第五行

时间:2018-11-14 17:05:06

标签: bash awk sed

我有一个带数字的文件

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'

4 个答案:

答案 0 :(得分:3)

您一次可以执行以下操作:

awk '{print > ("file" (NR%4))}' inputfile

这会将输出发送到文件file0file1file2file3

答案 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