固定幅ファイルのヘッダー列の1つをコピーし、詳細レコードに新しいフィールドを作成してから、そのフィールドを適切なプレースホルダに貼り付ける必要があります。
注:ファイルには複数のヘッダーと詳細レコードがあり、サンプルファイルデータの推定出力は次のとおりです。
レコードタイプ:H-ヘッダー、D-詳細。
入力する:
H0003A
D0001A
D0002A
D0003A
H0007A
D0001A
D0002A
D0003A
D0004A
D0005A
D0006A
D0007A
H0002B
D0001B
D0002B
H0004A
D0001A
D0002A
D0003A
D0004A
予想出力:
H0003A
D0001A3
D0002A3
D0003A3
H0007A
D0001A7
D0002A7
D0003A7
D0004A7
D0005A7
D0006A7
D0007A7
H0002B
D0001B2
D0002B2
H0004A
D0001A4
D0002A4
D0003A4
D0004A4
ベストアンサー1
したがって、各ヘッダー行の5番目の文字をタイトルではなく行の末尾に追加したいと思います。まったく:
awk 'BEGIN{OFS=FS=""} /^H/ {x = $5} /^D/ {$(NF+1) = x} 1'
または(もう少し入力しますが、正規表現の比較は避けてください)
awk 'BEGIN{OFS=FS=""} $1=="H" {x = $5} $1=="D" {$(NF+1) = x} 1'
Perlでも同様です:
perl -F'' -ple '$_ .= $x if $F[0] eq "D"; $x = $F[4] if $F[0] eq "H"'
頑固で曲がった人にとって
sed -e '/^H/ {p;s/.$//;h;d;}' -e '/^D/ {G;s/\n....//;}'