sed -n '$'!p abc.txt | tail +2 > def.txt
我在我的代碼上述sed命令 - 我無法弄清楚它做什麼 - 我正在參加SED教程它找出來,但我不能 - 可不可以有一個人請幫我找出它做什麼 - 感謝UNIX的sed命令的幫助
sed -n '$'!p abc.txt | tail +2 > def.txt
我在我的代碼上述sed命令 - 我無法弄清楚它做什麼 - 我正在參加SED教程它找出來,但我不能 - 可不可以有一個人請幫我找出它做什麼 - 感謝UNIX的sed命令的幫助
採取這種分階段:「運行abc.txt
通過sed的,但不打印任何東西去」
sed -n abc.txt
sed -n '$!p' abc.txt
(請注意,我已經糾正了我的想法是放錯位置的引號。)
「通過sed的運行abc.txt
;如果行不是最後一行,打印(即打印所有但最後一行)。「
我猜你知道其餘的,但注意tail +2
是陳舊的語法 - tail -n 2
會更好。
編輯:
要刪除的最後兩行,嘗試
sed 'N;$d'
,或者如果不工作,原油,但有效:
sed '$d' | sed '$d'
'tail -n 2'對於GNU更好。例如,SunOS 5.10將需要'tail + 2'。 – Johnsyweb
@Johnsyweb:謝謝,我不知道。 – Beta
我使用下面的sed命令來打印除了最後兩行Cna之外的所有文件,你可以驗證它是否正確sed'N; $!P; $!D; $ d' – user549432
至於sed
指令'$'!p
關注:
$
只匹配輸入文件的最後一行。!
否定了匹配的意義(所以它匹配所有但最後一行是)。p
打印出任何匹配的內容。所以基本上這隻打印文件的最後一行。
-n
選項將停止sed
執行其默認操作(打印模式空間) - 如果沒有這種情況,您將獲得最後一行的一個副本和所有其他行的兩個副本。
各地$
的報價是從試圖把它解釋爲一個shell變量停止殼 - 我會引用很多我自己('$!p'
),但是這是一個風格問題,至少在bash
。其他外殼如csh
(其使用!
進行命令歷史檢索)可能不會如此寬容。
我認爲這不僅僅是一個樣式問題 - 我知道的大部分炮彈都會對這個'!!'產生強烈的意見。 – Beta
@貝塔,好點,特別是因爲這個問題沒有標籤'bash'。我會添加一個片段來說明這一點。 – paxdiablo
我使用下面的sed命令來打印除了最後2行之外的所有Cna,你可以驗證它是否可以sed'N; $!P; $!D; $ d' – user549432
你有沒有理解它的任何部分,以便我們可以專注於其餘部分? – Beta
我想要的細節,直到管道 - 我沒事休息 - 基本上我想要sed的細節,我也發現了sed與-n不打印 - 我不知道剩下的'$'和!p – user549432
正如答案的補充:您可以使用(可以說是)清理刪除命令獲得相同的結果:'sed'$ d'file' – mhyfritz