이 텍스트를 어떻게 변환할 수 있나요?
입력 파일 형식:
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;