固定幅ファイルとしてフォーマットする必要があるソースファイルがあります。
ソースファイル形式:
Hdr1
Dtl1.1
Dtl1.2
Dtl1.3
Dtl1.4
Trailer0004
Hdr2
Dtl2.1
Dtl2.2
Dtl2.3
Dtl2.4
Dtl2.5
Trailer0005
.
.
.
.
HdrN
DtlN.1
DtlN.2
DtlN.3
Trailer0003
次に変換する必要があります。
Hdr1 Dtl1.1 Dtl1.2 Dtl1.3 Dtl1.4
Hdr2 Dtl2.1 Dtl2.2 Dtl2.3 Dtl2.4 DTL 2.5
.
.
.
.
HdrN DtlN.1 DtlN.2 DtlN.3 DtlN.4
答え1
そしてperl
:
perl -n -e 'if (m/^Trailer/) {print "\n"} else {chomp; print $_," "}' arun.txt
出力:
Hdr1 Dtl1.1 Dtl1.2 Dtl1.3 Dtl1.4
Hdr2 Dtl2.1 Dtl2.2 Dtl2.3 Dtl2.4 Dtl2.5
HdrN DtlN.1 DtlN.2 DtlN.3
注:各出力行には末尾の空白文字があります。これが発生しないようにするには、出力をパイプして削除しますsed -e 's/ $//'
。または、次のバージョンのスクリプトを代わりに使用してください。
perl -n -e 'if (m/^Trailer/) {
print join(" ",@line),"\n";
@line=();
} else {
chomp;
push @line,$_;
}' arun.txt