태그 사이의 공백을 파이프로 바꾸기

태그 사이의 공백을 파이프로 바꾸기

"{}" 태그에 파일이 있습니다. 파이프 형식으로 변환해야 합니다.

예는 다음과 같습니다.

{Id USXXXXXX} {Code USXXXXX} {Desc abcd 6.000% 5/24}

예상 결과 1:

{Id|USXXXXXX} {Code|USXXXXX} {Desc|abcd 6.000% 5/24}

예상 결과 2:

Id|USXXXXXX|Code|USXXXXX|Desc|abcd 6.000% 5/24

답변1

이것이 당신에게 어떻게 작동합니까?

awk '{for(i=1; i<=NF; i++) {if ($i ~ /^{/) {printf("%s|", $i)} else {printf("%s ", $i)}} printf("\n")}' test.in

예상 결과 1에 대해

awk '{for(i=1; i<=NF; i++) {if ($i ~ /^{/) {printf("%s|", $i)} else {printf("%s ", $i)}} printf("\n")}' test.in | sed -e 's#^{##' -e 's#} {#|#g' -e 's#} $##'

예상 결과는 2입니다.

답변2

또한 시도

awk -F"{" '{for (i=2; i<=NF; i++) sub (" ", "|", $i)}1' OFS="{" file
{Id|USXXXXXX} {Code|USXXXXX} {Desc|abcd 6.000% 5/24}

그리고

awk -F"{" '{gsub (/}( |$)/, ""); for (i=2; i<=NF; i++) sub (" ", "|", $i); sub (/\|/, "")}1' OFS="|" file
Id|USXXXXXX|Code|USXXXXX|Desc|abcd 6.000% 5/24

답변3

다음 결과에 대해 1은 명령입니다.

@praveen_2 ~]# echo "{Id USXXXXXX} {Code USXXXXX} {Desc abcd 6.000% 5/24}"| sed "s/{[A-Za-z]\{2,\}/&|/g"

산출

{Id| USXXXXXX} {Code| USXXXXX} {Desc| abcd 6.000% 5/24}

다음 결과 2에 대한 명령은 다음과 같습니다.

echo "{Id USXXXXXX} {Code USXXXXX} {Desc abcd 6.000% 5/24}"| sed "s/\}//g"| sed 's/ {/|/g'| sed 's/^{//g'| sed 's/ [a-zA-Z]\{2,\}/|&/g'

산출

Id| USXXXXXX|Code| USXXXXX|Desc| abcd 6.000% 5/24

관련 정보