Обмен цифрами - PullRequest
       8

Обмен цифрами

0 голосов
/ 23 декабря 2010

Я хотел бы поменять одну цифру с предыдущей: например, с 123456 по 214365. Как мне сделать это, используя sed / awk в среде bash?

Ответы [ 2 ]

6 голосов
/ 23 декабря 2010
echo 123456 | sed 's/\([0-9]\)\([0-9]\)/\2\1/g'
1 голос
/ 31 октября 2011

После вашего комментария к ответу x13n , который отвечает на ваш вопрос, кажется, что вы хотите более точно определить, какие цифры вы меняете.

Я бы использовал 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,Я бы порекомендовал получить sed & awk, второе издание .

Я бы также порекомендовал прочитать Джон Скит руководство по написанию идеального вопроса , которое поможет вам получить ответ, который вам необходим при задании таких вопросов.

...