Sed 交换数字

Sed 交换数字,sed,awk,Sed,Awk,我想用前一个数字交换一个数字: 例如123456至214365 在bash环境中如何使用sed/awk实现这一点?在您对回答您的问题的评论之后,您似乎想更具体地说明您交换了哪些数字 echo 123456 | sed 's/\([0-9]\)\([0-9]\)/\2\1/g' 我将使用awk交换第二列中的所有数字对: bash-3.2$ gawk -V | sed -n 1p GNU Awk 4.0.0 $ echo 254789123456,5306153059630141,6390270

我想用前一个数字交换一个数字: 例如123456至214365 在bash环境中如何使用sed/awk实现这一点?

在您对回答您的问题的评论之后,您似乎想更具体地说明您交换了哪些数字

echo 123456 | sed 's/\([0-9]\)\([0-9]\)/\2\1/g'
我将使用
awk
交换第二列中的所有数字对:

bash-3.2$ gawk -V | sed -n 1p
GNU Awk 4.0.0

$ echo 254789123456,5306153059630141,639027041150453 | gawk -F',' '
BEGIN {
    OFS=","
}

{
    $2 = gensub(/(.)(.)/, "\\2\\1", "g", $2)
    print
} '
254789123456,3560510395361014,639027041150453
您已经问了很多关于
sed
awk
的问题,我建议您联系一下


我还推荐阅读的指南,这将有助于你在回答这些问题时得到你需要的答案。

我有3个数字列,我希望上面只发生在中间:例如:2547 891253061530616143169031704115453之后:2547 89126353560510365361014639090441150。2547891234565306153059630141639027041150453 | sed's/,\([0-9]\)\([0-9]\)/,\2\1/'@Johnsyweb Nope。他想要的是交换中间数字内的所有数字对,而不仅仅是前两个数字。哦,是的。我没注意到这一点,觉得自己很傻。我现在发布了一个答案。奇怪,只有当我将
\d
更改为
[0-9]
时,它才对我有效<代码>\d似乎与字母
d
匹配,而不是数字。另外,事实上,为了让
gensub
工作,awk需要呆呆地看。我在OSX上看到了同样的行为。已经用版本更新了我的答案。酷,现在你的regexp与胸部匹配。@x13n:或荷马·辛普森的眼睛。