Grep/Awk/Sed は、「0010|」から「0070|」までの行セットを検索し、$PH_NO に一致を含めます。
以下はサンプルデータです。 0012フィールドに表示される電話番号と対応する顧客レコード全体(0010から0070までの行)を見つけるにはgrepが必要です。データファイルには、同じ電話番号を持つ2〜3件の顧客履歴を含めることができ、それらをすべてインポートする必要があります。
0010|Kumar||57 Rich street|Chennai|Tamil Nadu|
0011|20171115| ID
0012|149 196 222| PH Number
0013|20161101|20171102|
0022|Payment Method |Lucky customer|
0080|P|5.00-|20161111|Payment|
0080|P|5.00-|20161130|Payment|
0080|TP|10.00-|||
0070|000AYDCHDFF|820|762|
0010|RAM||57 Rich street|Chennai|Tamil Nadu|
0011|20171115| ID
0012|149 196 333| PH Number
0013|20161101|20171102|
0022|Payment Method |Lucky customer|
0080|P|5.00-|20161111|Payment|
0080|P|5.00-|20161130|Payment|
0080|TP|10.00-|||
0070|000AYDCHDFF|820|762|
0010|Joe||57 Rich street|Chennai|Tamil Nadu|
0011|20171115| ID
0012|149 196 222| PH Number
0013|20161101|20171102|
0022|Payment Method |Lucky customer|
0080|P|5.00-|20161111|Payment|
0080|P|5.00-|20161130|Payment|
0080|P|5.00-|20161111|Payment|
0080|P|5.00-|20161130|Payment|
0080|P|5.00-|20161111|Payment|
0080|P|5.00-|20161130|Payment|
0080|TP|10.00-|||
0070|000AYDCHDFF|820|762|
注:私はkshでAIXサーバーを使用しています。
ベストアンサー1
それでは、PH番号が一致した場合は、0010から0070までの全レコードが必要です$PH_NO"
か?これでこのsed
オネライナーが機能します。
sed "/^0010/,/^0070/H;/^0010/h;/^0070/! d;x;/|$PH_NO| PH Number/! d"
/^0010/,/^0070/H
予約済みスペースに0010から0070のレコードを追加します。/^0010/h
0010は追加しないでくださいが、新しいレコードを開始するため、予約済みスペースにコピーされます。/^0070/! d
0070 項目以外の場合、処理や出力は発生しません。x;/|$PH_NO| PH Number/! d"
レコード全体がパターン空間になるようにスペースを変更し、その番号が含まれていない場合は削除します。