2012-09-23 75 views
4

我一直在試圖學習sed,我在這裏找到的例子是用於交換從05082012到20120805的日期,並且我無法適應它們以滿足當前的需要。sed在不同長度的字符串中的特定位置交換字符

我需要將IP地址10.4.13.22轉換爲對nsupdate腳本的反向查找22.13.4.10。我最大的問題是每個八位字節有時會改變長度,例如10.4.13.2和10.19.8.126

感謝您的幫助!

echo 10.0.2.99 | sed 's/\(....\)\(....\)/\2\1/' 

這是目前我已經試過,只是基於了另一個問題在這裏,但因爲這些實例沒有提供太多的解釋,以什麼....手段,有麻煩林瞭解它做什麼。

這是命令.2.910.09的輸出,我期待99.2.0.10

直接,我想由分隔每個「部分」重新安排「」

+0

能否請您提供簡短的輸入/輸出的例子嗎?也是你目前的命令。你可以[編輯]你的文章添加信息。 –

+0

我更新了更多信息 –

+0

而這種情況下所需的輸出是..? '99.2.0.10'? –

回答

5

A 「暴力破解」 的方法來 「反向」 的IPv4地址是:

sed 's/\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\)/\4.\3.\2.\1/g' 

,或者對於GNU sed的,

sed -r 's/([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/\4.\3.\2.\1/g' 
+0

謝謝,我看到[0-9] +如何允許不同的長度和\。表示分隔符,\ 4 \ 3 \ 2 \ 1是反向重新排序的不同變量。非常優雅,你只是幫助我更瞭解sed。祝你有美好的一天! –

+0

@ACiDGRiM沒問題:)下面是一些鏈接,如果您有興趣:['sed' reference](http://www.grymoire.com/Unix/Sed.html),['sed'正則表達式](http://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html)。 –

相關問題