刪除shell中的每第N行

刪除shell中的每第N行

我正在嘗試使用 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( nskip m) 位址表示法

sed '1~3d' file

從第一行開始刪除每三行。

答案2

僅選擇Nawktry為模的行

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

相關內容