私は次のコマンドを使用しました。
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