交换数字

时间:2010-12-23 09:14:30

标签: sed awk

我想换一个数字与前一个数字: 例如。 123456至214365 如何在bash环境中使用sed / awk执行此操作?

2 个答案:

答案 0 :(得分:6)

echo 123456 | sed 's/\([0-9]\)\([0-9]\)/\2\1/g'

答案 1 :(得分:1)

根据您对x13n's answer的评论,它回答了您的问题,您似乎想要更具体地说明您交换的数字。

我会使用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

您已经提出了一些关于sedawk的问题,我建议您抓住sed & awk, Second Edition

我还建议您阅读Jon Skeetwriting the perfect question指南,这将有助于您在提出此类问题时获得所需的答案。