[英]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.