2017-08-08 47 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" 

虽然ü在我看来,唱管道操作员是完成工作的最简单直接的方式。希望这有助于让你接触到其他可能性。

相关问题