2011-11-28 56 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 

瞧!