我正在使用下面的正则表达式命令从行中删除字符串,但我的正则表达式没有按照我的期望工作。
sed -ie "s/^\s*worker\.\(.*\)\.balance_workers=\(.*\)wallet,*\(.*\)/worker.\1.balance_workers=\2\3/"
我的专栏是:
worker.walletloadbalancer.balance_workers=wallet,wallet2
结果我正在
worker.walletloadbalancer.balance_workers=wallet,2
我期待
worker.walletloadbalancer.balance_workers=wallet2
但如果我使用
sed -ie "s/^\s*worker\.\(.*\)\.balance_workers=\(.*\)wallet2,*\(.*\)/worker.\1.balance_workers=\2\3/"
获得预期结果
worker.walletloadbalancer.balance_workers=wallet
答案 0 :(得分:0)
您可以使用此sed
:
sed 's/=wallet,\(.*\)/=\1/g' file
来自sed
(工作):
sed -e "s/^\s*worker\.\(.*\)\.balance_workers=\(.*\)wallet,\(.*\)/worker.\1.balance_workers=\2\3/" file
问题是:
sed -e "s/^\s*worker\.\(.*\)\.balance_workers=\(.*\)wallet,*\(.*\)/worker.\1.balance_workers=\2\3/"
^
You do not need this '*'
修改强>
使用此sed
:
sed -Ee 's/=(.*)wallet2($|,(.*))/=\1\3/g' -e 's/,$//' file
<强>测试强>
$ cat file
worker.walletloadbalancer.balance_workers=wallet1,wallet,wallet2
$ sed -Ee 's/=(.*)wallet($|,(.*))/=\1\3/g' -e 's/,$//' file
worker.walletloadbalancer.balance_workers=wallet1,wallet2
$ sed -Ee 's/=(.*)wallet1($|,(.*))/=\1\3/g' -e 's/,$//' file
worker.walletloadbalancer.balance_workers=wallet,wallet2
$ sed -Ee 's/=(.*)wallet2($|,(.*))/=\1\3/g' -e 's/,$//' file
worker.walletloadbalancer.balance_workers=wallet1,wallet
答案 1 :(得分:0)
如果您的Input_file与显示的示例相同,那么以下内容可能对您有帮助。
LISS_SELECTEDNOTFOCUS
输出如下。
sed 's/\(.*,\)\([^[:digit:]]*\)\(.*\)/\1\3/g' Input_file