양쪽이 서로 교체되도록 콜론을 통해 문자를 교환하려고 합니다.
예: 입력
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