shell指令碼中的 導致sed命令解析失敗

2021-05-25 23:07:06 字數 552 閱讀 5344

``導致sed命令解析失敗,試驗如下

試圖把單個反斜線替換為兩個反斜線,也就是把

\替換為\\

$ cat t1.sh

#!/bin/sh

a=`echo 1|sed 's/\\/\\\\/g'`

echo $a

$ ./t1.sh

sed:-e 表示式 #1,字元 8:unterminated `s' command

$ sh -x ./t3.sh

++ echo 1

++ sed 's/\/\\/g'

sed:-e 表示式 #1,字元 8:unterminated `s' command

+ a=

+ echo

應該是反斜線提前被shell解析,傳給sed的時候已經變成s/\/\\/g

把``替換為$()的方式就可以了

$ cat t1.sh

#!/bin/sh

a=$(echo 1|sed 's/\\/\\\\/g')

echo $a

$ ./t1.sh

1執行成功

shell指令碼中sed的使用

sed語法格式 語法格式 sed 選項 編輯指令 檔名 選項 n 遮蔽預設輸出 i 直接修改檔案內容 r 啟用擴充套件正則 條件 1.行號 指令 p 輸出 print 例子 列印第一到四行 sed n 1,4p passwd 列印第三行,第五行 sed n 3p 5p passwd 列印第三行之後的...

shell指令碼學習sed

i 替換並儲存 s pattern replace string 只替換第一處 s pattern replace string g 替換所有 s pattern replace string ng 從第n處開始匹配 ex 直接替換文字 clz localhost shell learn sed i...

Shell指令碼補充 sed

var 10 a haha echo var 10 echo 10 echo ab 為空 echo b 輸出hahab a abcdcba echo 輸出abcdcba 完全匹配失敗 echo 輸出dcba abc被刪除了 即到第乙個被匹配的c echo a 輸出abcdcba 不會對源資料做修改a...