良い英語で表現する方法がわからないので、私のタイトルは少し混乱しています。
これが私の問題です。私はこのようにフォーマットされたフラットファイルを持っています:
: name1 field1-1: field2:value1-2 field3:"value1-3" field4:{"Value-1-4"}
: name2 field2-1: field2:"value2-2" field4:{"Value-2-4"} field3:Value2-3
: name3 field3-1: field3:{"Value-3-3"} field2:value3-2 field4:value3-4
したがって、フィールドが同じ順序で表示されないため、適切なファイルではないことがわかります。値の型が異なる場合があり、欠落している場合もあります。元のファイルも 5 ~ 20 フィールドの長さです。
ここで私が最終的に持っていたいものは次のとおりです。
: name1 field2:value1-2 field4:{"Value-1-4"}
: name2 field2:"value2-2" field4:{"Value-2-4"}
: name3 field2:value3-2 field4:value3-4
したがって、最終ファイルに必要なフィールドと、それらを表示する正確な順序を知っています。
私は何かを試しました
sed "s/(field1:.*)|(field2:.*)/\2\1/g"
正しいシンタックスではないことはわかっていますが、読みやすくするためです。ただし、最初の一致のみが一致し、他のグループは一致しないため、機能しません。
私がやりたいことはたくさんの で可能だと思いますが、どうすればそれができるのawk
か本当にわかりません。bash
私は, sed
, awk
andを使用することを本当に好みますgrep
が、選択の余地がない場合は、少し対処できますPerl
編集:簡単な例を挙げるかもしれませんが、実際のファイルには実際に異なるフィールド名があります
おやすみなさい、そしてありがとう