텍스트를 줄로 나누고 해당 값을 인쇄하는 방법은 무엇입니까?

텍스트를 줄로 나누고 해당 값을 인쇄하는 방법은 무엇입니까?

텍스트를 여러 줄로 나누고 해당 값을 인쇄하고 싶습니다. 예를 들어 다음과 같이 변경합니다.

YLB; YLR; YLS (tab) 30

다음을 입력하세요:

YLB (tab) 30
YLR (tab) 30
YLS (tab) 30

답변1

사용awk

awk 'BEGIN {FS="[; \t]+"; OFS="\t"} {for (i=1; i<NF; i++) print $i, $NF}'

전임자.

$ echo 'YLB; YLR; YLS     30' | awk 'BEGIN {FS="[; \t]+"; OFS="\t"} {for (i=1; i<NF; i++) print $i, $NF}'
YLB     30
YLR     30
YLS     30

답변2

답변3

"sed"를 사용하여 이를 수행하는 한 가지 방법은 다음과 같습니다.

TAB=`echo 'x' | tr 'x' '\011'`; # tab
SPC=`echo 'x' | tr 'x' '\040'`; # space
WS="[${SPC}${TAB}]";            # whitespace regex
echo "YLB; YLR; YLS ${TAB} 30" |
sed -ne "
    /\n/!G
    s/^\([^;]*\);${WS}*\(.*\)\(${WS}${TAB}.*\)/\1\3\2\3/
    P;/\n.*\n/D
 "

POSIX "sed"는 \t \s를 지원하지 않기 때문에 쉘 변수 TAB/SPC/WS가 있어야 합니다. 따라서 이것은 가난한 사람의 구현입니다.

관련 정보