コロンを挟んで文字を交換し、どちらかの側が互いに置き換わるようにしたいと考えています。
例: 入力
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
または、-E
オプションがある sed を使用します。
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