我可以使用sed
來檢查某些命令輸出的第一行(輸出到標準輸出),並刪除第一行,如果它匹配某種模式?如何在條件匹配時僅使用sed刪除第一行?
說,該命令的輸出是這樣的:
"AB"
"CD"
"E"
"F"
我希望它變成:
"CD"
"E"
"F"
但是,當第一行是"GH"
,我不想刪除線。
我嘗試這樣做,但它不工作:
<some_command> |sed '1/<pattern>/d'
殼告訴我:
sed: 0602-403 1/<pattern>/d is not a recognized function.
我只是想用sed來處理第一線,留下其他線路不變。
這裏的正確語法是什麼?
它的工作原理!我想這裏'1'是指行號,但'!b'是什麼意思?另外,這兩個表達式可以合併爲一個(僅使用一個「-e」)? – 2013-04-21 01:34:22
@強旭,是'1'是第一行,'!'表示'如果不是','b'是'break'命令,這意味着'如果不行1救市並繼續下一行'。對於第一行,只有'/ GH /!d'的意思是'如果該行不包含GH刪除''。一些sed允許使用';'字符作爲連接命令的方式,使用'BSD'或'Apple'你的成功可能會有所不同。 – potong 2013-04-21 06:48:52
在'man sed'中,它只告訴我'b [label]分支到:帶有標籤變量的命令。如果標籤變量爲空,則分支到腳本的末尾。「手冊沒有提及」b「作爲中斷命令。然而,它是這樣工作的。我錯過了什麼? – 2013-04-21 22:46:47