簡體   English   中英

sed命令產生意外結果

[英]Sed command giving unexpected result

下面是我試圖找到含義的shell腳本。

sed 's/19984 $/98400 /' | sed 's/19992 $/99200 /'

我希望將19984 $替換為98400,並將此字符串傳遞給下一個sed命令,該命令將19992 $替換為99200。

但是當我使用示例輸入執行以下腳本時

echo "19984 $ need to be  replaced with 98400  "| sed 's/19984 $/98400 /' | sed 's/19992 $/99200 /'

我得到相同的字符串

"19984 $ need to be  replaced with 98400"

我希望我在這里想念的東西。 請幫我。 我是Shell腳本的新手。 提前致謝!

對於sed, $是保留字符,您必須對其進行轉義( \\$ )才能正確解析:

$ echo "19984 $ need to be  replaced with 98400  "| sed 's/19984 \$/98400 /' 
98400  need to be  replaced with 98400

全部一起:

$ echo "19984 $ need to be  replaced with 98400  "| sed 's/19984 \$/98400 /' | sed 's/19992 \$/99200 /'
98400  need to be  replaced with 98400

因此,您需要保持原樣。

$可能意味着很多事情:
-正常角色。
- 行結束。
-變量名。

獲得代碼的方式意味着第二種情況:行尾:

$ echo "19984 " | sed 's/19984 $/98400 /'
98400
$ echo "19984 something" | sed 's/19984 $/98400 /'
19984 something

所以sed將只匹配行以19984結尾的情況。 否則,它將不匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM