내 파일에는 다음 데이터가 있습니다.
col1 col2 col3 subcol1 subcol2 subcol3
subcol4 subcol5 subcol6
col4 subcol7 subcol8 subcol9
subcol10 subcol11 subcol2
데이터는 공백으로 구분됩니다. 탭이 없으면 이 데이터를 다음과 같이 변환하고 싶습니다.
-------------------------------------------------------
col1 | col2 | col3 | subcol1 | subcol2 | subcol13
--------------------------------
| | | subcol4 | subcol5 | subcol6
-----------------------------------------
| | col4 | subcol7 | subcol8 | subcol9
--------------------------------
| | | subcol10 | subcol11| subcol12
-------------------------------------------------------
어떻게 해야 하나요?
편집됨
나는 다음 명령을 시도했습니다
sed -r -e 's/ {5}/\t/g' -e 's/ /\t/g' file.in | sed -e 's/\t/_|/g'| column -t -s '_'
그것은 생산한다
col1 |col2 |col3 |subcol1 |subcol2 |subcol13
| | |subcol4 |subcol5 |subcol6
| |col4 |subcol7 |subcol8 |subcol9
| | |subcol10 |subcol11 |subcol12
이것을 채우려면 그 줄만 있으면 됩니다.
답변1
나는 다음 awk
스크립트로 끝났습니다.
awk '{gsub(/ {1,5}/,"\t|")}1' infile.txt | \
awk -F'|' 'NR>1{for(i=1;i<=NF;i++) if ($i=="\t") c++;
printf("%*s",(c*8),"\t-");
for (fill=1;fill<=length($0)+c;fill++)printf "-";
printf("\n%s\n",$0);c=0;next} {print $0}'
출력은 다음과 같습니다
col1 |col2 |col3 |subcol1 |subcol2 |subcol3
-----------------------------------
| | |subcol4 |subcol5 |subcol6
--------------------------------------
| |col4 |subcol7 |subcol8 |subcol9
-------------------------------------
| | |subcol10 |subcol11 |subcol2