
我正在嘗試使用 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