Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 带文本字符串的sed--不是输入文件_Linux_Unix_Sed_Bash_Ksh - Fatal编程技术网

Linux 带文本字符串的sed--不是输入文件

Linux 带文本字符串的sed--不是输入文件,linux,unix,sed,bash,ksh,Linux,Unix,Sed,Bash,Ksh,这应该很简单:我想对文本字符串而不是输入文件运行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' 我得到提示 正确的方法是什么?您有单引号冲突,请使用: echo "A,B,C" | se

这应该很简单:我想对文本字符串而不是输入文件运行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' 
我得到提示


正确的方法是什么?

您有单引号冲突,请使用:

 echo "A,B,C" | sed "s/,/','/g"
如果使用,您也可以这样做(
工作方式如您所愿:

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

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

找到任何反斜杠并替换为正斜杠:

input="This has a backslash \\"

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

echo "$output"

奇怪,对我来说不起作用…意识到这是很久以前发布的,但奇怪的是,如果这是问题的话,我会反对
echo string | sed ...
echo "A,B,C" | sed s/,/\',\'/g
input="This has a backslash \\"

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

echo "$output"