ファイルからアカウント コードを引き出すスクリプトを作成しようとしています。ファイル自体は長く、他にもたくさんのデータを含んでいますが、以下に見ている部分を抜粋しました(この抜粋の前後に別の内容があります)。
私が興味を持っているファイルのセクションは、時々このようになります
Account Customer Order No. Whse Payment Terms Stock No. Original Invoice No.
VIN No.
AAAAAA01 9999 1000 30 days
そして時々それはこのように見えます
Account Customer Order No. Whse Payment Terms Stock No. Original Invoice No.
AAAAAA01 9999 1000 30 days
(1 つのフィールドは、そのフィールドが独自の行に折り返されていた端を切り落としました)
コードがオンになっている行を取得したら、コードをプルするために使用できることはわかってい| tr -s ' ' | cut -d ' ' -F 1
ますが、それは設定された行番号ではありません (このセクションの前の内容は動的です)。
私は余分なフィールドでケースを処理しようとすることから始めています.?
これは基本的にOCRedであるため、フィールドを区切るために使用されるスペースの数は変更できます。
これまでの私の試みのいくつか-(ファイルがSTDINから入ってくると仮定します)
| sed -n '/\s*Account\s\+Customer Order No\.\s\+Whse\s\+Payment Terms\s\+Stock No\.\s\+Original Invoice No\.\s\+VIN No\.\s*/{n;p;}'
| sed -n '/\s*Account\s\+Customer Order No\.\s\+Whse\s\+Payment Terms\s\+Stock No\.\s\+Original Invoice No\.\s*\n\s*VIN No\.\s*/{n;p;}'
| sed -n '/\s*Account\s\+Customer Order No\.\s\+Whse\s\+Payment Terms\s\+Stock No\.\s\+Original Invoice No\.\s*\r\s*VIN No\.\s*/{n;p;}'
| sed -n '/\s*Account\s\+Customer Order No\.\s\+Whse\s\+Payment Terms\s\+Stock No\.\s\+Original Invoice No\.\s*\r\n\s*VIN No\.\s*/{n;p;}'
これらはすべて一致しませんでした
| sed -n '/\s*Account\s\+Customer Order No\.\s\+Whse\s\+Payment Terms\s\+Stock No\.\s\+Original Invoice No\.\s*/,/\s\*VIN No\.\s*/{n;p;}'
これは少なくとも何かと一致しましたが、苛立たしいことに VIN No. 行を出力し、その後に 2 行おきに出力しました。また、式のオプション部分としてマークするのがより困難になるようです。
したがって、完全なファイル (上記の抜粋のいずれかを含む) の入力が与えられた場合、次のいずれかの出力を探しています。
AAAAAA01 9999 1000 30 days
(その後、必要なデータにトリミングできます)、またはAAAAAA01
それを直接取得する簡単な方法があるかどうか。