在vi/sed模式之间更改字符
我正在努力找出如何从各种模式之间获得一个,如:在vi/sed模式之间更改字符,sed,replace,wildcard,vi,Sed,Replace,Wildcard,Vi,我正在努力找出如何从各种模式之间获得一个,如: 500000 xyz,CA 我试过这样的方法: sed -E "s/\([a-zA-Z]*\),([a-zA-Z]*\)/\([a-zA-Z]*\) ([a-zA-Z]*\)/g" $file -i 它选择了第一种模式,但又用第二种模式重写了它,我觉得我错过了一些非常简单的东西,我无法解决它,非常感谢任何帮助。我想你错过了捕获组的概念。要在替换字符串中引用搜索的括号部分,请对第一组使用\1,对第二组使用\2,以此类推 修改后的行为: sed -E
500000
xyz,CA
我试过这样的方法:
sed -E "s/\([a-zA-Z]*\),([a-zA-Z]*\)/\([a-zA-Z]*\) ([a-zA-Z]*\)/g" $file -i
它选择了第一种模式,但又用第二种模式重写了它,我觉得我错过了一些非常简单的东西,我无法解决它,非常感谢任何帮助。我想你错过了捕获组的概念。要在替换字符串中引用搜索的括号部分,请对第一组使用
\1
,对第二组使用\2
,以此类推
修改后的行为:
sed -E "s/([a-zA-Z]),([a-zA-Z])/\1 \2/g" $file -i
这个修改过的行没有将匹配第一个
([a-zA-Z])
的部分替换为文本“([a-zA-Z])
”,而是将匹配的部分复制到输出中(第二组也是如此)。明白了,我完全不明白!你说的有用,我正在申请各种各样的模式。