次の入力があります。
MX04A;
DMX04A; DMX04A; LMX04A; LMX04A;
-17.2; -15.3; -14.3; -13.6;
-16.8; -15.4; -16.0; -15.3;
LH36A;
DLH36A; DLH36A;
-11; -117.2;
-11; -17.5;
この出力を得たいです。
MX04A:DMX04A; MX04A:DMX04A; MX04A:LMX04A; MX04A:LMX04A;
-17.2; -15.3; -14.3; -13.6;
-16.8; -15.4; -16.0; -15.3;
LH36A:DLH36A; LH36A:DLH36A;
-11; -117.2;
-11; -17.5;
ベストアンサー1
少なくともサンプルデータに対して動作する開始は次のとおりです。
sed -r '/[A-Z];/{N;s/([^;]+);\n([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+)/\1:\2 \1:\3 \1:\4 \1:\5/;3,$s/^/\n/};s/^/ /' input.txt
これは次のことを前提としています。
- 各レコードの最初の行には常に大文字があります。
- 各レコードの行 2 は常に行 1 に従います。
- 各レコードの行2には常に正確に4つのフィールドがあります(一般化できますが、現在は正確に4つでなければなりません)。
- 各レコードの残りの行は常に純粋な数字です。つまり、文字はありません。
- すべてのフィールドはで区切ります
space
semicolon
。 - 出力のレコードは空行で区切る必要がありますが、出力の先頭または末尾に余分な空行を含めないでください。