我正在尝试使用 awk 删除 N 行后的一行,但似乎无法正确执行。文件格式是这样的
YYYYYY
XXXXXX
XXXXXX
YYYYYY
XXXXXX
XXXXXX
真实的例子是
office3
3
1
office3
6
1
office3
6
3
office3
1
1
如何删除 YY 行或“office”行。我需要每两行删除一行,无论其内容如何。
答案1
如果您有 GNU sed,您可以使用n~m
( n
skip m
) 地址表示法
sed '1~3d' file
从第一行开始删除每三行。
答案2
仅选择N
以awk
try为模的行
awk '!(NR%2)' file
或者
awk 'NR%3==0' file
这里NR
表示到目前为止已处理的行数。
在您的具体情况下(删除所有带有 的行Y
):
$ echo 'YYYYYY
XXXXXX
XXXXXX
YYYYYY
XXXXXX
XXXXXX' | awk '!(NR%3==1)'
XXXXXX
XXXXXX
XXXXXX
XXXXXX