「Unix的編程環境」指出,在中美戰略經濟對話的手段則表達式中使用「$」結束的是爲我好線,因爲桑達和美元符號
cat file | sed 's/$/\n/'
被interpretted爲「加每行結尾有換行符「。
出現的問題,當我嘗試使用命令:
cat file | sed '$d'
不應該在該行刪除每一行,而不是最後一個呢?在這種情況下,美元符號意味着最後一行的結束。我錯了什麼?
「Unix的編程環境」指出,在中美戰略經濟對話的手段則表達式中使用「$」結束的是爲我好線,因爲桑達和美元符號
cat file | sed 's/$/\n/'
被interpretted爲「加每行結尾有換行符「。
出現的問題,當我嘗試使用命令:
cat file | sed '$d'
不應該在該行刪除每一行,而不是最後一個呢?在這種情況下,美元符號意味着最後一行的結束。我錯了什麼?
請注意,sed中的regex
必須位於引號以外的分隔符(;
,:
,~
等)中。
/regex/
例如:
sed '/foo/s/bar/bux/g' file
或
~regex~
例如:
sed 's~dd~s~' file
但不'regex'
。所以$
在'$d'
不會被認爲是sed的正則表達式。 '$d'
的行爲就像指出最後一行的地址。
在第二種用法中,沒有正則表達式。 $
有一個地址,意思是最後一行。
$
在s
命令例如s
模式中使用時被視爲正則表達式錨。
s/$/\n
然而在$d
,$
是不一個正則表達式錨,它是地址表示法是指輸入,它是使用d
命令刪除的最後一行。
另請注意,cat
在您的上一個命令中是不必要的。它可以用作:
sed '$d' file