是否可以使用SED替換env var中的某個東西?如何在沒有env var的情況下使用SED?
$ a='aoeua'
$ sed '[email protected]@[email protected]' <$a
bash: aoeua: No such file or directory
$ env|grep "SHELL"
SHELL=/bin/bash
我想輸出是
ooeuo
在'aoeua'
與o
代替每個a
。
是否可以使用SED替換env var中的某個東西?如何在沒有env var的情況下使用SED?
$ a='aoeua'
$ sed '[email protected]@[email protected]' <$a
bash: aoeua: No such file or directory
$ env|grep "SHELL"
SHELL=/bin/bash
我想輸出是
ooeuo
在'aoeua'
與o
代替每個a
。
使用echo:
$ echo "$a" | sed '[email protected]@[email protected]'
在bash你也可以做與${parameter/pattern/string}
語法簡單替代。例如:
$ v='aoeua'
$ echo ${v/a/o}
ooeua
請注意,這隻會替換模式的第一個匹配項。
對於**全局替換**,我們可以做'echo $ {v // a/o}'。 – 2012-01-18 02:59:33
@JaypalSingh謝謝!我在手冊頁中沒有看到任何提及,但它看起來像是有效的。 – 2012-01-18 06:52:52
是的,它寫得不好。這就是它所說的:'$ {parameter/pattern/string}該模式被擴展爲產生一個模式,就像在路徑名擴展中一樣。參數被擴展並且模式與其值的最長匹配被字符串替換。 **如果模式以/開頭,則模式的所有匹配都將替換爲字符串**。通常只有第一場比賽被替換。' – 2012-01-18 07:08:16
我已經編輯你的問題說明你要找的輸出,基於公認的答案。原來的問題告訴我們什麼*沒有*工作,但沒有明確告訴我們你想做什麼。 (勞倫斯猜對了。) – 2012-01-18 01:25:48