나는 다음 명령을 사용했습니다.
awk 'BEGIN{print "Header"};{FIELDWIDTHS ="3 4 3"}{print $1"|"$2"|"$3"
|"};END{print "Footer"}' file8
실제 -
Header
1234567890|||
234|5678|901|
345|6789|012|
098|7654|321|
Footer
예상하다 -
Header
123|4567|890|
234|5678|901|
345|6789|012|
098|7654|321|
Footer
답변1
{FIELDWIDTHS ="3 4 3"}
첫 번째 줄을 읽고 구문 분석한 후에만 작업이 적용되므로 첫 번째 줄에 오류가 발생합니다 .
FIELDWIDTHS
블록 내부로 정의를 이동 하면 BEGIN
예상대로 작동합니다.
awk 'BEGIN{print "Header"; FIELDWIDTHS ="3 4 3"}{print $1"|"$2"|"$3"|"};END{print "Footer"}' file8
이는 FIELDWIDTHS
GNU Awk()에서만 지원될 수 있습니다 gawk
.
답변2
이는 다음 명령으로 달성되며 잘 작동합니다.
주문하다:
awk 'NR==1{$0=substr($1,1,3)"|"substr($1,4,3)"|"substr($1,6,3)"|"}1' filename
산출
awk 'NR==1{$0=substr($1,1,3)"|"substr($1,4,3)"|"substr($1,6,3)"|"}1' l.txt
123|456|678|
234|5678|901|
345|6789|012|
098|7654|321|
Footer