콜론에서 문자를 바꾸는 방법은 무엇입니까?

콜론에서 문자를 바꾸는 방법은 무엇입니까?

양쪽이 서로 교체되도록 콜론 사이의 문자를 바꾸고 싶습니다.

예: 입력

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

관련 정보