次の行の各フィールドにパターンを追加する

次の行の各フィールドにパターンを追加する

次の入力があります。

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
  • 出力のレコードは空行で区切る必要がありますが、出力の先頭または末尾に余分な空行を含めないでください。

おすすめ記事