Linuxシェルスクリプトで複数の文字列パターンを解析する方法

Linuxシェルスクリプトで複数の文字列パターンを解析する方法

私はLinuxシェルに初めて触れており、この問題に対する解決策を考えるのに苦労しています。ファイル内の複数の文字列(データ)を解析するのに役立つ人はいますか?以下のファイルの場合は、隣のBIG*20021208*00001**すべての値を解析したいと思います:A999、、、。A10001001

ST*810*0001
BIG*20021208*00001**A9
99*N1*ST*XYZ Test Corporation*9*122334455
N3*987 Freeway Dr.
N4*New York*NY*98765
N1*BT*ABC Test Company*9*122334455
N3*123 Highway Street
N4*Los Angeles*CA*12345
ITD*01*3*2**30**30*****60
FOB*PP
IT1**1*EA*200**UA*EAN
PID*F****Lamp
IT1**4*EA*50**UA*EAN
PID*F****Chair
TDS*2000
CAD*****Routing
ISS*30*CA
CTT*50
SE*19*0001
ST*810*0002
BIG*20021208*00001**A1000
N1*ST*XYZ Test Corporation*9*122334455
N3*987 Freeway Dr.
N4*New York*NY*98765
N1*BT*ABC Test Company*9*122334455
N3*123 Highway Street
N4*Los Angeles*CA*12345
ITD*01*3*2**30**30*****60
FOB*PP
IT1**1*EA*200**UA*EAN
PID*F****Lamp
IT1**4*EA*50**UA*EAN
PID*F****Chair
TDS*2000
CAD*****Routing
ISS*30*CA
CTT*50
SE*19*0002
ST*810*0003
BIG*20021208*00001**10
01N1*ST*XYZ Test Corporation*9*122334455
N3*987 Freeway Dr.
N4*New York*NY*98765
N1*BT*ABC Test Company*9*122334455
N3*123 Highway Street
N4*Los Angeles*CA*12345
ITD*01*3*2**30**30*****60
FOB*PP
IT1**1*EA*200**UA*EAN
PID*F****Lamp
IT1**4*EA*50**UA*EAN
PID*F****Chair
TDS*2000
CAD*****Routing
ISS*30*CA
CTT*50
SE*19*0003

これで、BIGセグメントに見られるように、A999の値が分離されました(もはや完全ではありません)。今私の問題は、データ(A999など)を取得したときに値A999全体ではなく、このA9のみを生成することです。解決策はありますか?

ベストアンサー1

sed '/BIG.20021208.00001/!d;s/.*\*//' <<\DATA
    ST*810*0001
    BIG*20021208*00001**A999
    N1*ST*XYZ Test Corporation*9*122334455
    N3*987 Freeway Dr.
    N4*New York*NY*98765
    N1*BT*ABC Test Company*9*122334455
    N3*123 Highway Street
    N4*Los Angeles*CA*12345
    ITD*01*3*2**30**30*****60
    FOB*PP
    IT1**1*EA*200**UA*EAN
    PID*F****Lamp
    IT1**4*EA*50**UA*EAN
    PID*F****Chair
    TDS*2000
    CAD*****Routing
    ISS*30*CA
    CTT*50
    SE*19*0001
    ST*810*0002
    BIG*20021208*00001**A1000
    N1*ST*XYZ Test Corporation*9*122334455
    N3*987 Freeway Dr.
    N4*New York*NY*98765
    N1*BT*ABC Test Company*9*122334455
    N3*123 Highway Street
    N4*Los Angeles*CA*12345
    ITD*01*3*2**30**30*****60
    FOB*PP
    IT1**1*EA*200**UA*EAN
    PID*F****Lamp
    IT1**4*EA*50**UA*EAN
    PID*F****Chair
    TDS*2000
    CAD*****Routing
    ISS*30*CA
    CTT*50
    SE*19*0001
    ST*810*0002
    BIG*20021208*00001**A1000
    N1*ST*XYZ Test Corporation*9*122334455
    N3*987 Freeway Dr.
    N4*New York*NY*98765
    N1*BT*ABC Test Company*9*122334455
    N3*123 Highway Street
    N4*Los Angeles*CA*12345
    ITD*01*3*2**30**30*****60
    FOB*PP
    IT1**1*EA*200**UA*EAN
    PID*F****Lamp
    IT1**4*EA*50**UA*EAN
    PID*F****Chair
    TDS*2000
    CAD*****Routing
    ISS*30*CA
    CTT*50
    SE*19*0002
    ST*810*0003
    BIG*20021208*00001**1001
    N1*ST*XYZ Test Corporation*9*122334455
    N3*987 Freeway Dr.
    N4*New York*NY*98765
    N1*BT*ABC Test Company*9*122334455
    N3*123 Highway Street
    N4*Los Angeles*CA*12345
    ITD*01*3*2**30**30*****60
    FOB*PP
    IT1**1*EA*200**UA*EAN
    PID*F****Lamp
    IT1**4*EA*50**UA*EAN
    PID*F****Chair
    TDS*2000
    CAD*****Routing
    ISS*30*CA
    CTT*50
    SE*19*0003
DATA

これにより、次の結果のみが生成されます。

A999
A1000
1001

おすすめ記事