2011-11-28 35 views
2

我試圖找到全2號位僅在下面的列表和反向只有那些串 - 我曾嘗試下面的代碼,但它也扭轉了前兩個數字123號也是 - 我如何得到它忽略123號,只是扭轉兩位數字sed命令來扭轉所有兩位數字的號碼

echo "87 123 45 6" | sed -re 's/([0-9])([0-9])/\2\1/g' 

回答

2

隨着GNU sed的,使用此:

sed -e 's/\<\([0-9]\)\([0-9]\)\>/\2\1/g' 

\<表示一個字,\>結束的開始。

+1

@Jaypal當然這並不能爲3位數字,如問題指定了* * –

+0

邁克爾嗨,正是我一直在尋找 - 即時通訊新的這個和你exaplined它完美的我 - 謝謝! – frodo

0

嘗試這樣的工作 回聲「87 123 45 6」 | SED -re的/([0-9])([0-9])/ \ 2 \ 1/G' 這裏我添加空間,這解決問題。

+1

這不會改變第一數量,它不是由前面有一個空格。如果最後一個數字有兩位數字,那麼它也會失敗。 –

1

您需要包括字界碑:

$ echo "87 123 45 6" | sed -re 's/\b([0-9])([0-9])\b/\2\1/g' 
78 123 54 6 

瞧!