Как поменять местами символы через двоеточие?

Как поменять местами символы через двоеточие?

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

Пример: Ввод

1: Hello
2: World
3: I
4: am 
5: Brendan

Выход:

Hello: 1
World: 2
I: 3
am: 4
Brendan: 5

Я пробовал использовать cut и sed, но не смог найти правильный метод.

решение1

Вы можете попробовать этоawk

awk 'BEGIN{FS=OFS=": "}{print $2, $1}' file.txt 

Или sed с этим вариантом -E.

sed -E 's/(.+): (.+)/\2: \1/' file.txt 

Или более медленное, если не самое медленное решение оболочки.

while IFS=": " read -r first second; do
  printf '%s: %s\n' "$second" "$first"
done < file.txt 

решение2

Попробуйте это независимо от того, являются ли входные данные одной или несколькими строками:

awk 'BEGIN{FS="[: ]*"; OFS=":" }{for (i=2; i<=NF; i+=2) printf "%s: %s ", $i, $(i-1); print _}' file

Связанный контент