我有包含像JOY_DOL_XXX
字符串在很多地方一些文件。我想用另一個帶雙引號的字符串替換爲"JOY.DOL.XXX"
,但這裏的XXX
可以是任何內容,例如MAN
,CAT
,DOG
所以在這種情況下,我想寫一個腳本,相應地替換它,而不明確指定它。在殼牌如何從一種形式的字符串替換爲另一種形式
例如:
JOY_DOL_MAN ==> "JOY.DOL.MAN"
JOY_DOL_CAT ==> "JOY.DOL.CAT"
能否請你幫我,我怎能做到這一點。
我有包含像JOY_DOL_XXX
字符串在很多地方一些文件。我想用另一個帶雙引號的字符串替換爲"JOY.DOL.XXX"
,但這裏的XXX
可以是任何內容,例如MAN
,CAT
,DOG
所以在這種情況下,我想寫一個腳本,相應地替換它,而不明確指定它。在殼牌如何從一種形式的字符串替換爲另一種形式
例如:
JOY_DOL_MAN ==> "JOY.DOL.MAN"
JOY_DOL_CAT ==> "JOY.DOL.CAT"
能否請你幫我,我怎能做到這一點。
This awk
may work。
awk '{gsub(/_/,".");print "\""$0"\""}' file
awk -F_ '{$1=$1;print "\""$0"\""}' OFS=. file
支持更復雜的請求。
echo ABC JOY_DOL_CAT XYZ | awk '{for (i=1;i<=NF;i++) {if (gsub(/_/,".",$i)) printf "\"%s\" ",$i; else printf "%s ",$i}print ""}'
ABC "JOY.DOL.CAT" XYZ
我在這裏有另一個疑問,$ echo JOY_DOL_XXXX | sed的| JOY_DOL _ \(... \)|「JOY.DOL。\ 1」| g' 使我輸出爲「JOY.DOL.XXX」X.但我期待「JOY.DO.XXXX」這裏XXX可能是3個字符或更多。請爲此建議解決方案 – user2803710
我發現上面給出的「awk」解決方案對於這種情況正常工作。謝謝.. – user2803710
我注意到現在還有一個問題。 #echo ABC JOY_DOL_CAT XYZ | AWK '{GSUB(/ _ /, 「」);打印 「\」 「$ 0」 \ 「」}' OUTPUT: 「ABC JOY.DOL.CAT XYZ」,但我期待ABC「JOY.DOL.CAT 「XYZ – user2803710
桑達似乎簡單:
sed 's|JOY_DOL_\(...\)|"JOY.DOL.\1"|g' file
輸入:
JOY_DOL_MAN
JOY_DOL_CAT
輸出:
"JOY.DOL.MAN"
"JOY.DOL.CAT"
\(...\)
三個字符。在替換中代表\1
。g
將允許多個匹配被替換爲每個輸入模式。哦..that的偉大我只是測試,如下 – user2803710
$回聲JOY_DOL_XXX |。sed中的| JOY_DOL _ \( ... \)|「JOY.DOL \ 1。」 | G」 – user2803710
@ user2803710不客氣,我希望你可以通過點擊其左邊感謝複選標記接受的答案太 – konsolebox
是否添加**' 「'**太之前和之後的字符串** –
是XXX總是3個字符如果'JOY_DOL_FOOBAR'出現在你的輸入,將所需的輸出是什麼? - ?'」 ?JOY.DOL.FOO 「BAR'或'」 JOY.DOL.FOOBAR「'或'JOY_DOL_FOOBAR'或別的東西 –