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');