sed与文字string – 没有input文件

这应该很容易:我想运行sed针对文字string,而不是input文件。 如果你想知道为什么,例如编辑存储在variables中的值,不一定是文本数据。

当我做:

sed 's/,/','/g' "A,B,C" 

A,B,C是我想要改成A','B','C的文字

我明白了

 Can't open A,B,C 

好像它认为A,B,C是一个文件。

我试图pipe道回声:

 echo "A,B,C" | sed 's/,/','/g' 

我得到一个提示。

什么是正确的方法来做到这一点?

你有一个单引号冲突,所以使用:

  echo "A,B,C" | sed "s/,/','/g" 

如果使用bash ,你也可以做( <<<是一个here-string ):

 sed "s/,/','/g" <<< "A,B,C" 

但不是

 sed "s/,/','/g" "A,B,C" 

因为sed期望文件作为参数(s)

编辑

如果您使用ksh或任何其他的:

 echo string | sed ... 

像你想要的那样工作:

 echo "A,B,C" | sed s/,/\',\'/g 

我的版本在bash脚本中使用variables:

find任何反斜杠并用正斜杠代替:

 input="This has a backslash \\" output=$(echo "$input" | sed 's,\\,/,g') echo "$output"