Linux

使用 sed 或 awk 刪除模式後的所有內容

  • February 20, 2020

我知道有很多關於它的問題,但我無法讓它發揮作用。

我想用or清理一個組(例如root)。所以我需要刪除之後的所有內容/etc/group``sed``awk``root:*:0:

我試圖刪除它:

cat /etc/group | awk '!p;/^root:*:0:/{p=1}'

cat /etc/group | sed 's/root\:\*\:0\:.*//'

sed刪除整root行。

我究竟做錯了什麼?

您可以使用帶有 sed 的地址來限制要操作的行:

sed '/^root:/s/:[^:]*$/:/' /etc/group

其中,對於以 開頭的行root:,刪除:該行最後一個字元之後的所有字元。

/etc/group記錄只有 4 個:以分隔的列,因此它會刪除最後一個包含所有組成員的列)

awk

awk 'BEGIN{OFS=FS=":"} $1=="root"{$NF=""} 1' /etc/group

如果第一個欄位是 ,則拆分欄位:並將最後一個欄位設置為空字元串root

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