Sed

獲取除 x 到 y 之外的所有行

  • August 19, 2022

我有一個像這樣的文件:

A
B
C
D
E
F

我可以使用第 2 到 4 行sed -n 2,4p

如何獲得除 2 到 4 之外的所有行?

您的範例命令確實與您想要的相反。閱讀手冊頁並註意-n禁用sed的預設行為,即列印處理的每一行。您禁用行的列印,然後僅顯式列印 range 中的行2,4

一種解決方案是啟用行的預設列印,但告訴sed刪除您範圍內的行:

$ sed 2,4d << EOF
> A
B
C
D
E
F
> EOF
A
E
F

函式可以以!字元開頭,在這種情況下,如果地址不選擇模式空間,則應應用該函式。

來源

在您的情況下,功能是p,地址是2,4

sed -n '2,4!p'

(單引號以防!在您的 shell 中是特殊的。)

引用自:https://unix.stackexchange.com/questions/714065