我需要幫助執行一個文件sed語句,我似乎無法弄清楚爲什麼我有沒有工作。我仔細研究過,每個結果都有類似的結果,但我不明白爲什麼我的結果沒有我期望的結果。sed和正則表達式問題
我有一個像
192.168.10.23:7020
192.168.10.23:4520
192.168.10.23:3320
與多家上市文件等等,基本上我需要192.168.10.23:XX21更換192.168.10.23:XX20。
其中,我已經嘗試:
sed 's/\:\([0-9]\)\{2\}20/\:&21/g' $file
這給類似的結果:
192.168.10.23:702021
192.168.10.23:452021
192.168.10.23:332021
也:
sed 's/\:\([0-9]\)\{2\}/\:&21/g'
這給類似的結果:
192.168.10.23:702120
192.168.10.23:452120
192.168.10.23:332120
其他嘗試根本沒有改變,或者有一個非常不同的結果。我覺得我很親密,但迄今爲止。任何幫助將非常感激!
結腸是不是在正則表達式元字符,所以你不需要逃避它。下面的答案涵蓋了解決方案。你很接近,但'&'匹配正則表達式匹配的整個字符串; '\ 1'表示在第一個'\(... \)'序列中匹配的第一部分。 – 2013-03-05 21:00:05
謝謝!我認爲這是我的主要問題「&」與「\ 1」。我當然需要更多地學習sed手冊頁和其他教程,但這絕對幫助我擺脫束縛。 – 2013-03-06 05:13:50