這時用 sed 的指令就變成 sed 's/http:\/\/127\.0\.0\.1:8000/\//' filename,變得有點不方便,所以就想到有沒有在餵給 sed 指令前,把字串處理一下來避開 sed regular expression 的用法,找了一下,頗方便:
#!/bin/bash
keyword=$1
keyword =${keyword//\//\\\/};
keyword =${keyword//-/\\-};
keyword =${keyword//\./\\.};
cmd="sed 's/$keyword/\//' filename"
echo $cmd
eval $cmd
其中 Bash 裡的字串,要做取代的方式:
#只處理一次取代
keyword=${keyword/OldPattern/NewPattern}
#處理全部處代
keyword=${keyword//OldPattern/NewPattern}
收工!
作者已經移除這則留言。
回覆刪除更新一下,如果只想換 s 指令的分隔符號,那改成 "s,……,……," 就行了。 (也可以換成其它字元。)
刪除讚讚 XD 我 command line 太弱了
刪除