Linux
使用 sed 或 awk 刪除模式後的所有內容
我知道有很多關於它的問題,但我無法讓它發揮作用。
我想用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
。