2017-08-08 48 views
0

如果我想在bash函數($1)的第一個參數上運行搜索/替換模式,是否可以直接將它傳遞給sed,或者我必須執行echo "$1" | sed ...一個短語可以直接傳遞給sed嗎?

+0

如果不通過標準輸入,你還會如何將它傳遞給sed? –

+0

@ IgnacioVazquez-Abrams這實際上是我問的確切問題 – ewok

回答

4

sed需要文件名作爲輸入。如果它沒有得到任何文件名,它從標準輸入中讀取。如果您有不在文件中的文本(如您的參數),請將其傳送到sed

或者,你可以使用進程替換(bash的功能),它使文本顯示爲一個文件,通常採取的文件名程序/路徑:

sed 's///g' <(echo "$1") 

或者你可以使用一個在這裏的文件,像這樣:

FOO=$(sed 's///g' <<EOF 
$1 
EOF 
) 

或者一個字符串,在這裏(bash的功能):

sed 's///g' <<< "$1" 

雖然ü在我看來,唱管道操作員是完成工作的最簡單直接的方式。希望這有助於讓你接觸到其他可能性。

相關問題