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
Unix 如何使用SED更改以下输入行?_Unix_Sed - Fatal编程技术网

Unix 如何使用SED更改以下输入行?

Unix 如何使用SED更改以下输入行?,unix,sed,Unix,Sed,如何使用SED更改以下输入行 输入-总线输入(“abc”) 所需的O/p-总线ln in('def','xyz') 使用sed替换命令: echo "bus_ln in ('abc');" | sed "s/bus_ln in ('abc');/bus_ln in ('def','xyz');/" 尝试一下: sed "s/\([^(]*\)('[^']*')/\1('def','xyz')/" inputfile 它将替换括号之间的任何内容 输入: bus_ln in ('abc'); f

如何使用SED更改以下输入行

输入-总线输入(“abc”)


所需的O/p-总线ln in('def','xyz')

使用sed替换命令:

echo "bus_ln in ('abc');" | sed "s/bus_ln in ('abc');/bus_ln in ('def','xyz');/"
尝试一下:

sed "s/\([^(]*\)('[^']*')/\1('def','xyz')/" inputfile
它将替换括号之间的任何内容

输入:

bus_ln in ('abc');
foo('bar');
baz aaa bbb ('ccc ddd') some more text
输出:

bus_ln in ('def','xyz');
foo('def','xyz');
baz aaa bbb ('def','xyz') some more text

这可能适合您:

echo "bus_ln in ('abc');" | sed "s/'.*'/'def','xyz'/"
bus_ln in ('def','xyz');
这使用
”来包围sed命令,这有时可能导致意外结果。 相反,使用
”比较笨拙,但更容易预测:

echo "bus_ln in ('abc');" | sed 's/'\''.*'\''/'\''def'\',\''xyz'\''/'
bus_ln in ('def','xyz');
其中,
'\'
表示单个
'
'\',\''
表示
,'

echo "bus_ln in ('abc');" | sed 's/'\''.*'\''/'\''def'\',\''xyz'\''/'
bus_ln in ('def','xyz');