両側が互いに交換されるように、コロン間の文字を変更したいと思います。
例: 入力
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
入力が1行でも複数行でも、次のことを試してください。
awk 'BEGIN{FS="[: ]*"; OFS=":" }{for (i=2; i<=NF; i+=2) printf "%s: %s ", $i, $(i-1); print _}' file