ChatGPT解决这个技术问题 Extra ChatGPT

带有文字字符串的 sed——不是输入文件

这应该很容易:我想针对文字字符串而不是输入文件运行 sed。如果您想知道为什么,例如编辑存储在变量中的值,不一定是文本数据。

当我做:

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

其中 A,B,C 是我要更改为 A','B','C 的文字

我明白了

Can't open A,B,C

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

我尝试通过管道将其回显:

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

我得到提示。

正确的方法是什么?


G
Gilles Quenot

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

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

如果使用 ,您也可以这样做(<<<here-string):

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

但不是

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

因为 sed 期望文件作为参数

编辑:

如果您使用 或任何其他:

echo string | sed ...

奇怪,对我不起作用...意识到这是前一段时间发布的,但是如果这是问题的话,奇怪的弃用
f
ferrants

像你想要的那样工作:

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

p
phyatt

我在 bash 脚本中使用变量的版本:

查找任何反斜杠并用正斜杠替换:

input="This has a backslash \\"

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

echo "$output"