2015-07-12 85 views
1

「Unix的編程環境」指出,在中美戰略經濟對話的手段則表達式中使用「$」結束的是爲我好線,因爲桑達和美元符號

cat file | sed 's/$/\n/' 

被interpretted爲「加每行結尾有換行符「。

出現的問題,當我嘗試使用命令:

cat file | sed '$d' 

不應該在該行刪除每一行,而不是最後一個呢?在這種情況下,美元符號意味着最後一行的結束。我錯了什麼?

回答

4

請注意,sed中的regex必須位於引號以外的分隔符(;,:,~等)中。

/regex/ 

例如:

sed '/foo/s/bar/bux/g' file 

~regex~ 

例如:

sed 's~dd~s~' file 

但不'regex'。所以$'$d'不會被認爲是sed的正則表達式。 '$d'的行爲就像指出最後一行的地址。

5

在第二種用法中,沒有正則表達式。 $有一個地址,意思是最後一行。

4

$s命令例如s模式中使用時被視爲正則表達式錨。

s/$/\n 

然而在$d$一個正則表達式錨,它是地址表示法是指輸入,它是使用d命令刪除的最後一行

另請注意,cat在您的上一個命令中是不必要的。它可以用作:

sed '$d' file