这是一个有效的shell sed命令,它做了什么?

时间:2009-09-22 21:44:08

标签: shell sed

sed 's/\([ab]\)\([ab]\)./\2\1x/g' file.txt

我的理解是: 在file.txt中,找到以'a'或'b'开头的任何字符串,后跟'a'或'b',后跟任何一个char(比如'abc'),并将其替换为字符串第1个和第2个char切换位置,第3个char是x('bax')。命令的语法是否正确?我是对的吗?

2 个答案:

答案 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'意味着它会在每一行上进行多次替换。你有什么理由不能尝试看看吗?