-1
我想用雙引號將單引號替換爲使用sed的字符串。如何在Bash中用bash中的兩個單引號替換單引號
我已經試過這樣迴音它是一個可愛的一天| SED「S /'/ \ 「/ g的」,但該字符串沒有發現比賽和沒有給出結果。
我使用bash在Ubuntu的Windows
我在做什麼錯?
我想用雙引號將單引號替換爲使用sed的字符串。如何在Bash中用bash中的兩個單引號替換單引號
我已經試過這樣迴音它是一個可愛的一天| SED「S /'/ \ 「/ g的」,但該字符串沒有發現比賽和沒有給出結果。
我使用bash在Ubuntu的Windows
我在做什麼錯?
的擴展可以得到你想要的東西很簡單:
original="it's a lovely day"
modified=${original//\'/\"}
echo "$modified"
除了它的簡單性,這種擴張不使用外部命令(只有外殼的功能),因此性能開銷比啓動一個單獨的進程要低得多
打破語法了一點:
${original...}
意味着我們正在擴大original
變量//
意思是「搜索所有的」\'
是一個轉義的單引號(文本搜索)/
意味着\"
「以取代」是一個轉義雙引號(文字被替換)另一種有趣的方式來做到這一點:
repl()
{
local IFS="$2$1"
set -- $3
echo "$*"
}
repl \' \" "it's a lovely day"
repl "'" '"' "it's a lovely day" # Quoted rather than escaped
可以製成符合POSIX標準的一個子shell的成本:
repl()
(
IFS="$2$1"
set -- $3
echo "$*"
)
爲什麼要用'sed',考慮'tr'代替...(例如。 ''tr''') –
我意識到自己的錯誤,我並沒有用「」標記中的回聲來包圍文本 –
問題的標題是:'...用兩個單引號(例如'''')問題的主體說:'用雙引號'例如(''')... - imho,那是不同的。 – jm666