Ich möchte Zeichen über einen Doppelpunkt hinweg vertauschen, sodass die beiden Seiten sich gegenseitig ersetzen.
Beispiel: Eingabe
1: Hello
2: World
3: I
4: am
5: Brendan
Ausgabe:
Hello: 1
World: 2
I: 3
am: 4
Brendan: 5
Ich habe versucht, cut und sed zu verwenden, konnte aber keine richtige Methode finden.
Antwort1
Sie können dies versuchenawk
awk 'BEGIN{FS=OFS=": "}{print $2, $1}' file.txt
Oder sed, das hat eine -E
Option.
sed -E 's/(.+): (.+)/\2: \1/' file.txt
Oder eine langsamere, wenn nicht die langsamste Shell-Lösung.
while IFS=": " read -r first second; do
printf '%s: %s\n' "$second" "$first"
done < file.txt
Antwort2
Versuchen Sie Folgendes, unabhängig davon, ob die Eingabe aus einer oder mehreren Zeilen besteht:
awk 'BEGIN{FS="[: ]*"; OFS=":" }{for (i=2; i<=NF; i+=2) printf "%s: %s ", $i, $(i-1); print _}' file