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"