这应该很简单:我想对文字字符串运行sed,而不是输入文件.如果你想知道为什么,那就是,例如编辑存储在变量中的值,而不是文本数据.
当我做:
sed 's/,/','/g' "A,B,C"
Run Code Online (Sandbox Code Playgroud)
其中A,B,C是我想要改为A','B','C的文字
我明白了
Can't open A,B,C
Run Code Online (Sandbox Code Playgroud)
好像它认为A,B,C是一个文件.
我试着用它来回声:
echo "A,B,C" | sed 's/,/','/g'
Run Code Online (Sandbox Code Playgroud)
我得到一个提示.
做正确的方法是什么?
Gil*_*not 122
你有一个单引号冲突,所以使用:
echo "A,B,C" | sed "s/,/','/g"
Run Code Online (Sandbox Code Playgroud)
如果使用bash,你也可以这样做(<<<是here-string):
sed "s/,/','/g" <<< "A,B,C"
Run Code Online (Sandbox Code Playgroud)
但不是
sed "s/,/','/g" "A,B,C"
Run Code Online (Sandbox Code Playgroud)
因为sed期望文件作为参数
编辑:
如果你使用ksh或任何其他的:
echo string | sed ...
Run Code Online (Sandbox Code Playgroud)
我的版本在bash脚本中使用变量:
查找任何反斜杠并替换为正斜杠:
input="This has a backslash \\"
output=$(echo "$input" | sed 's,\\,/,g')
echo "$output"
Run Code Online (Sandbox Code Playgroud)