基本上我需要打印2行然后删除两行,依此类推。
awk 'BEGIN {count = 0} if(count == 4){count = 0} else if(count <= 1) {print,count++} else {count++}' f4
我收到了语法错误。
或
awk '{count = 0; if(count == 4)count = 0; else if(count <= 1) print count++; else count++;}' f4
它打印全部为零。
我也试过
awk 'NR%3 && NR%4' f4
哪个很接近,但不打印3和4的倍数。
由于
编辑:GOT IT!
awk 'BEGIN{count = 0};{ if(count == 3)count = 0; else if(count <= 1) {print; count=count+1;} else count=count+1;}' f4
答案 0 :(得分:8)
这应该是最简短和最简单的解释之一
awk 'NR%4==1 || NR%4==2'
从NR%4==1
开始,forth
会打印每one
行
从NR%4==2
开始,forth
会打印每two
行
||
这是一个合乎逻辑的or
鉴于此文件
cat file
one 1
two 2
three 3
four 4
five 5
six 6
seven 7
eight 8
nine 9
ten 10
eleven 11
twelve 12
thirteen 13
fourteen 14
fifteen 15
sixteen 16
seventeen 17
eighteen 18
nineteen 19
twenty 20
awk 'NR%4==1 || NR%4==2' file
给出:
one 1
two 2
five 5
six 6
nine 9
ten 10
thirteen 13
fourteen 14
seventeen 17
eighteen 18
使用&&
awk 'NR%4 && NR%4!=3'
答案 1 :(得分:2)
使用getline
功能读取以下行并丢弃那些您不想打印的行:
awk '{ print; getline; print; getline; getline }' infile
答案 2 :(得分:2)
这对我有用:
awk 'int((NR-1)/2)%2 == 0'