sed 's/\([ab]\)\([ab]\)./\2\1x/g' file.txt
我的理解是: 在file.txt中,找到以'a'或'b'开头的任何字符串,后跟'a'或'b',后跟任何一个char(比如'abc'),并将其替换为字符串第1个和第2个char切换位置,第3个char是x('bax')。命令的语法是否正确?我是对的吗?
答案 0 :(得分:3)
你是对的,除了开始部分。这将尽可能多地匹配字符串中任何位置的字符,因此您最终会得到如下的替换:
"123ab1" to "123bax"
"1234ab" to "1234ab"
"ab1ba2" to "baxabx"
"bbaabb" to "bbxbax"
您可能想要做的是将其锚定到带有插入符字符的字符串的开头,如下所示:
s/^\([ab]\)\([ab]\)./\2\1x/g
,并提供:
"abc123" to "bax123"
"123abc" to "123abc"
答案 1 :(得分:2)
是的,你是 - 请注意,结尾的'g'意味着它会在每一行上进行多次替换。你有什么理由不能尝试看看吗?