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"