Unix의 문자열 슬라이싱

Unix의 문자열 슬라이싱

이 텍스트를 어떻게 변환할 수 있나요?

입력 파일 형식:

MOD MAXT:TID=TID190,MT=VCU,MAXT=100;

원하는 출력 형식:

MOD MAXT:TID,MT,MAXT
MOD MAXT:TID190,VCU,100;

답변1

sed 'h;s/=[^,]*//gp;g;s/[^:,=]*=//g' <in >out

MOD MAXT:TID,MT,MAXT
MOD MAXT:TID190,VCU,100;

답변2

awk -F':|,|=' '{print $1":"$2","$4","$6"\n"$1":"$3","$5","$7}' FILE

나는 FS의 OR로 "|"를 사용했기 때문에 기본적으로 awk는 ":", "," 또는 "="를 사용하여 행을 구성 요소(태그)로 분할합니다.
이제 줄의 어떤 부분이든 순서에 관계없이 인쇄할 수 있으며 "\n"을 개행 문자로 삽입하여 두 번째 줄을 추가할 수 있습니다.

awk -F':|,|=' '{print $1":"$2","$4","$6"\n"$1":"$3","$5","$7}' <<< 'MOD MAXT:TID=TID190,MT=VCU,MAXT=100;' MOD MAXT:TID,MT,MAXT MOD MAXT:TID190,VCU,100;

답변3

퍼슬리:

perl -ne 'print /(.*:)/, join (",", /(\w+)=/g),"\n", /(.*:)/, join(",", /=([\w;]+)/g),"\n";'

기본 패턴 일치(예: 현재 줄)를 사용하고 정규식을 통해 캡처 그룹을 선택합니다. (그런 다음 인쇄)

다음을 제공합니다:

MOD MAXT:TID,MT,MAXT
MOD MAXT:TID190,VCU,100;

관련 정보