2009-09-22 52 views
0
sed 's/\([ab]\)\([ab]\)./\2\1x/g' file.txt 

我的理解是:在 file.txt的,找到任何字符串無論是「A」或「B」開頭,跟隨一個「A」或「B」,後跟任意一個字符(比如' abc'),並用字符串1st和第二個字符替換它,第三個字符是x('bax')。該命令的語法是否正確?我是否正確?這是一個有效的shell sed命令,它有什麼作用?

+0

肯定採取Jefromi的建議,並嘗試在一個樣本文件。 – 2009-09-22 21:49:54

回答

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" 
+0

+1我錯過了derrdji說'開始'的地方。好決定。 – Cascabel 2009-09-22 21:58:15

2

是的,你是 - 注意到'g'在最後意味着它會在每一行上進行儘可能多次的替換。任何理由,你不能只是嘗試看看?