Help text manipulation

Hello Forum ,
I need a help about text manupulation. I have a text file and I have to manipulate this file. Let's say source.txt

source.txt
UNB+UNOC:3+O0013000005MAN MN  RVS:91+0098006688:92+190304:2313+F004169241'
UNH+8146848+DELJIT:D:96A:UN'
BGM+307:::JIS_SYNCRO_FIRM+2019030423234101+9'
DTM+137:20190304:102'
DTM+67:201902140600:203'
RFF+AOW:90000032'
NAD+ST+F::92'
LOC+7+F-MOKB::92'
LOC+11+WARENEINGANG::92'
LOC+159+FJ0010::92'
SEQ+39+628601:4'
DTM+94:201902141041:203'
GIR+4+0012C-0294:AN++JM:AT'
LOC+54+F28022::92'
LIN+++33.25480-5827:IN'
IMD+F++:::WIAZKA ELEKTRYCZNA  LADEN-HAST E4C-'
QTY+131:1:C62'
UNT+17+8146848'
UNH+8146849+DELJIT:D:96A:UN'
BGM+307:::JIS_SYNCRO_FIRM+2019030423234102+9'
DTM+137:20190304:102'
DTM+67:201902140600:203'
RFF+AOW:90000032'
NAD+ST+F::92'
LOC+7+F-MOKB::92'
LOC+11+WARENEINGANG::92'
LOC+159+FJ0010::92'
SEQ+39+628601:4'
DTM+94:201902141041:203'
GIR+4+0012C-0294:AN++JN:AT'
LOC+54+F28023::92'
LIN+++PZ.25480-5758:IN'
IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
QTY+131:1:C62'
UNT+17+8146849'
UNH+8146851+DELJIT:D:96A:UN'
BGM+307:::JIS_SYNCRO_FIRM+2019030423234103+9'
DTM+137:20190304:102'
DTM+67:201902140600:203'
RFF+AOW:90000032'
NAD+ST+F::92'
LOC+7+F-MOKB::92'
LOC+11+WARENEINGANG::92'
LOC+159+FJ0010::92'
SEQ+39+628601:4'
DTM+94:201902141041:203'
GIR+4+0012C-0294:AN++JQ:AT'
LOC+54+F28026::92'
LIN+++PZ.25480-5756:IN'
IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
QTY+131:1:C62'
LIN+++PZ.25480-5769:IN'
IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
QTY+131:1:C62'
LIN+++PZ.25480-5798:IN'
IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
QTY+131:1:C62'
LIN+++PZ.25480-5810:IN'
IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
QTY+131:1:C62'
UNT+26+8146851'
UNZ+3+F004169241'
cat -n source.txt
1  UNB+UNOC:3+O0013000005MAN MN  RVS:91+0098006688:92+190304:2313+F004169241'
     2  UNH+8146848+DELJIT:D:96A:UN'
     3  BGM+307:::JIS_SYNCRO_FIRM+2019030423234101+9'
     4  DTM+137:20190304:102'
     5  DTM+67:201902140600:203'
     6  RFF+AOW:90000032'
     7  NAD+ST+F::92'
     8  LOC+7+F-MOKB::92'
     9  LOC+11+WARENEINGANG::92'
    10  LOC+159+FJ0010::92'
    11  SEQ+39+628601:4'
    12  DTM+94:201902141041:203'
    13  GIR+4+0012C-0294:AN++JM:AT'
    14  LOC+54+F28022::92'
    15  LIN+++33.25480-5827:IN'
    16  IMD+F++:::WIAZKA ELEKTRYCZNA  LADEN-HAST E4C-'
    17  QTY+131:1:C62'
    18  UNT+17+8146848'
    19  UNH+8146849+DELJIT:D:96A:UN'
    20  BGM+307:::JIS_SYNCRO_FIRM+2019030423234102+9'
    21  DTM+137:20190304:102'
    22  DTM+67:201902140600:203'
    23  RFF+AOW:90000032'
    24  NAD+ST+F::92'
    25  LOC+7+F-MOKB::92'
    26  LOC+11+WARENEINGANG::92'
    27  LOC+159+FJ0010::92'
    28  SEQ+39+628601:4'
    29  DTM+94:201902141041:203'
    30  GIR+4+0012C-0294:AN++JN:AT'
    31  LOC+54+F28023::92'
    32  LIN+++PZ.25480-5758:IN'
    33  IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
    34  QTY+131:1:C62'
    35  UNT+17+8146849'
    36  UNH+8146851+DELJIT:D:96A:UN'
    37  BGM+307:::JIS_SYNCRO_FIRM+2019030423234103+9'
    38  DTM+137:20190304:102'
    39  DTM+67:201902140600:203'
    40  RFF+AOW:90000032'
    41  NAD+ST+F::92'
    42  LOC+7+F-MOKB::92'
    43  LOC+11+WARENEINGANG::92'
    44  LOC+159+FJ0010::92'
    45  SEQ+39+628601:4'
    46  DTM+94:201902141041:203'
    47  GIR+4+0012C-0294:AN++JQ:AT'
    48  LOC+54+F28026::92'
    49  LIN+++PZ.25480-5756:IN'
    50  IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
    51  QTY+131:1:C62'
    52  LIN+++PZ.25480-5769:IN'
    53  IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
    54  QTY+131:1:C62'
    55  LIN+++PZ.25480-5798:IN'
    56  IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
    57  QTY+131:1:C62'
    58  LIN+++PZ.25480-5810:IN'
    59  IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
    60  QTY+131:1:C62'
    61  UNT+26+8146851'
    62  UNZ+3+F004169241'

I am interest in the records of between every "GIR" lines

catn -n source.txt|grep -i "GIR"

    13  GIR+4+0012C-0294:AN++JM:AT'
    30  GIR+4+0012C-0294:AN++JN:AT'
    47  GIR+4+0012C-0294:AN++JQ:AT'

SO My final output will be;

GIR+4+0012C-0294:AN++JM:AT' LIN+++33.25480-5827:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JN:AT' LIN+++PZ.25480-5758:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5756:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5769:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5798:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5810:IN' QTY+131:1:C62'

I need LIN & QTY lines for each GIR lines. As above first GIR line starts at the line of 13 so through the second GIR (at line 40) There are lines LIN & QTY. I want to write out as GIR_NAME LIN QTY.

--- Post updated at 09:29 AM ---

source.txt
UNB+UNOC:3+O0013000005MAN MN  RVS:91+0098006688:92+190304:2313+F004169241'
UNH+8146848+DELJIT:D:96A:UN'
BGM+307:::JIS_SYNCRO_FIRM+2019030423234101+9'
DTM+137:20190304:102'
DTM+67:201902140600:203'
RFF+AOW:90000032'
NAD+ST+F::92'
LOC+7+F-MOKB::92'
LOC+11+WARENEINGANG::92'
LOC+159+FJ0010::92'
SEQ+39+628601:4'
DTM+94:201902141041:203'
GIR+4+0012C-0294:AN++JM:AT'
LOC+54+F28022::92'
LIN+++33.25480-5827:IN'
IMD+F++:::WIAZKA ELEKTRYCZNA  LADEN-HAST E4C-'
QTY+131:1:C62'
UNT+17+8146848'
UNH+8146849+DELJIT:D:96A:UN'
BGM+307:::JIS_SYNCRO_FIRM+2019030423234102+9'
DTM+137:20190304:102'
DTM+67:201902140600:203'
RFF+AOW:90000032'
NAD+ST+F::92'
LOC+7+F-MOKB::92'
LOC+11+WARENEINGANG::92'
LOC+159+FJ0010::92'
SEQ+39+628601:4'
DTM+94:201902141041:203'
GIR+4+0012C-0294:AN++JN:AT'
LOC+54+F28023::92'
LIN+++PZ.25480-5758:IN'
IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
QTY+131:1:C62'
UNT+17+8146849'
UNH+8146851+DELJIT:D:96A:UN'
BGM+307:::JIS_SYNCRO_FIRM+2019030423234103+9'
DTM+137:20190304:102'
DTM+67:201902140600:203'
RFF+AOW:90000032'
NAD+ST+F::92'
LOC+7+F-MOKB::92'
LOC+11+WARENEINGANG::92'
LOC+159+FJ0010::92'
SEQ+39+628601:4'
DTM+94:201902141041:203'
GIR+4+0012C-0294:AN++JQ:AT'
LOC+54+F28026::92'
LIN+++PZ.25480-5756:IN'
IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
QTY+131:1:C62'
LIN+++PZ.25480-5769:IN'
IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
QTY+131:1:C62'
LIN+++PZ.25480-5798:IN'
IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
QTY+131:1:C62'
LIN+++PZ.25480-5810:IN'
IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
QTY+131:1:C62'
UNT+26+8146851'
UNZ+3+F004169241'
cat -n source.txt
1  UNB+UNOC:3+O0013000005MAN MN  RVS:91+0098006688:92+190304:2313+F004169241'
     2  UNH+8146848+DELJIT:D:96A:UN'
     3  BGM+307:::JIS_SYNCRO_FIRM+2019030423234101+9'
     4  DTM+137:20190304:102'
     5  DTM+67:201902140600:203'
     6  RFF+AOW:90000032'
     7  NAD+ST+F::92'
     8  LOC+7+F-MOKB::92'
     9  LOC+11+WARENEINGANG::92'
    10  LOC+159+FJ0010::92'
    11  SEQ+39+628601:4'
    12  DTM+94:201902141041:203'
    13  GIR+4+0012C-0294:AN++JM:AT'
    14  LOC+54+F28022::92'
    15  LIN+++33.25480-5827:IN'
    16  IMD+F++:::WIAZKA ELEKTRYCZNA  LADEN-HAST E4C-'
    17  QTY+131:1:C62'
    18  UNT+17+8146848'
    19  UNH+8146849+DELJIT:D:96A:UN'
    20  BGM+307:::JIS_SYNCRO_FIRM+2019030423234102+9'
    21  DTM+137:20190304:102'
    22  DTM+67:201902140600:203'
    23  RFF+AOW:90000032'
    24  NAD+ST+F::92'
    25  LOC+7+F-MOKB::92'
    26  LOC+11+WARENEINGANG::92'
    27  LOC+159+FJ0010::92'
    28  SEQ+39+628601:4'
    29  DTM+94:201902141041:203'
    30  GIR+4+0012C-0294:AN++JN:AT'
    31  LOC+54+F28023::92'
    32  LIN+++PZ.25480-5758:IN'
    33  IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
    34  QTY+131:1:C62'
    35  UNT+17+8146849'
    36  UNH+8146851+DELJIT:D:96A:UN'
    37  BGM+307:::JIS_SYNCRO_FIRM+2019030423234103+9'
    38  DTM+137:20190304:102'
    39  DTM+67:201902140600:203'
    40  RFF+AOW:90000032'
    41  NAD+ST+F::92'
    42  LOC+7+F-MOKB::92'
    43  LOC+11+WARENEINGANG::92'
    44  LOC+159+FJ0010::92'
    45  SEQ+39+628601:4'
    46  DTM+94:201902141041:203'
    47  GIR+4+0012C-0294:AN++JQ:AT'
    48  LOC+54+F28026::92'
    49  LIN+++PZ.25480-5756:IN'
    50  IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
    51  QTY+131:1:C62'
    52  LIN+++PZ.25480-5769:IN'
    53  IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
    54  QTY+131:1:C62'
    55  LIN+++PZ.25480-5798:IN'
    56  IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
    57  QTY+131:1:C62'
    58  LIN+++PZ.25480-5810:IN'
    59  IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
    60  QTY+131:1:C62'
    61  UNT+26+8146851'
    62  UNZ+3+F004169241'

catn -n source.txt|grep -i "GIR"

    13  GIR+4+0012C-0294:AN++JM:AT'
    30  GIR+4+0012C-0294:AN++JN:AT'
    47  GIR+4+0012C-0294:AN++JQ:AT
GIR+4+0012C-0294:AN++JM:AT' LIN+++33.25480-5827:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JN:AT' LIN+++PZ.25480-5758:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5756:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5769:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5798:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5810:IN' QTY+131:1:C62'

Dear cemokam65 ,

You are not using code tags correctly and we (the admins and moderators) are required to edit and fix your posts.

Code tags are written like this:

```text
 blab blah blah 
```

Not as you were doing:

[CODE\} blab blah blah [CODE/]

Please be careful when posting.

Thanks.

ok thank's for your information it's my fault from now on I am going take care about it

awk '/GIR/,/QTY/' source.txt>t_source.txt
more t_source.txt
GIR+4+0012C-0294:AN++JM:AT'
LOC+54+F28022::92'
LIN+++33.25480-5827:IN'
IMD+F++:::WIAZKA ELEKTRYCZNA  LADEN-HAST E4C-'
QTY+131:1:C62'
GIR+4+0012C-0294:AN++JN:AT'
LOC+54+F28023::92'
LIN+++PZ.25480-5758:IN'
IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT'
LOC+54+F28026::92'
LIN+++PZ.25480-5756:IN'
IMD+F++:::CZESC PROTOTYPOWA  EL-LEITUNGSSATZ'
QTY+131:1:C62'

And finaly;

cat t_source.txt|grep -v IMD|grep -v LOC>f_source.txt
more f_source.txt
GIR+4+0012C-0294:AN++JM:AT'
LIN+++33.25480-5827:IN'
QTY+131:1:C62'
GIR+4+0012C-0294:AN++JN:AT'
LIN+++PZ.25480-5758:IN'
QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT'
LIN+++PZ.25480-5756:IN'
QTY+131:1:C62'

Now I need to get ifnal output like as ;

GIR+4+0012C-0294:AN++JM:AT' LIN+++33.25480-5827:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JN:AT' LIN+++PZ.25480-5758:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5756:IN' QTY+131:1:C62'

Your own approach could be condensed and then complemented like

awk '/GIR/,/QTY/' file | grep -v "IMD\|LOC" | paste -sd"  \n"
GIR+4+0012C-0294:AN++JM:AT' LIN+++33.25480-5827:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JN:AT' LIN+++PZ.25480-5758:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5756:IN' QTY+131:1:C62'

but would not necessarily yield the desired result. How about

awk '/^GIR/ {GN = $0}; /^LIN/ {LN = $0} /^QTY/ {print GN, LN, $0}' file
GIR+4+0012C-0294:AN++JM:AT' LIN+++33.25480-5827:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JN:AT' LIN+++PZ.25480-5758:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5756:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5769:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5798:IN' QTY+131:1:C62'
GIR+4+0012C-0294:AN++JQ:AT' LIN+++PZ.25480-5810:IN' QTY+131:1:C62'
1 Like

Thank you very much RudiC, That's what I want:)

Above the solution by Rudic I just need one further step. My files like ;

ls -1rt DVA*
DVA.BPNE04.M.DELJIT101621
DVA.BPNE04.M.DELJIT101622
DVA.BPNE04.M.DELJIT101623
DVA.BPNE04.M.DELJIT101624
DVA.BPNE04.M.DELJIT101625
DVA.BPNE04.M.DELJIT101626
DVA.BPNE04.M.DELJIT101627
DVA.BPNE04.M.DELJIT101628
DVA.BPNE04.M.DELJIT101629
DVA.BPNE04.M.DELJIT101630
DVA.BPNE04.M.DELJIT101631
DVA.BPNE04.M.DELJIT101632
DVA.BPNE04.M.DELJIT101633
DVA.BPNE04.M.DELJIT101634
DVA.BPNE04.M.DELJIT101635
DVA.BPNE04.M.DELJIT101636
DVA.BPNE04.M.DELJIT101637
DVA.BPNE04.M.DELJIT101638
DVA.BPNE04.M.DELJIT101639
DVA.BPNE04.M.DELJIT101640
DVA.BPNE04.M.DELJIT101641
DVA.BPNE04.M.DELJIT101642
DVA.BPNE04.M.DELJIT101643
DVA.BPNE04.M.DELJIT101644
DVA.BPNE04.M.DELJIT101645
DVA.BPNE04.M.DELJIT101646
DVA.BPNE04.M.DELJIT101647
DVA.BPNE04.M.DELJIT101648
DVA.BPNE04.M.DELJIT101649

And I can get the records with command

ls -1rt DVA*|while read line
do
awk '/^GIR/ {GN = $0}; /^LIN/ {LN = $0} /^QTY/ {print GN, LN, $0}' $line >>$tarih_report1.txt
done

My tarih_report1.txt is like;

cat tarih_report1.txt
GIR+4+0018C-0376:AN++JQ:AT' LIN+++33.25480-5715:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++33.25480-5716:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++33.25480-5718:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++36.25480-5826:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++36.25480-5829:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++36.25480-5830:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++36.25480-5831:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++36.25480-5833:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++36.25480-5834:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++36.25480-5835:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++36.25480-5836:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++36.25480-5837:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++36.25480-5839:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++36.25480-6913:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++83.25480-5006:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++83.25480-5010:IN' QTY+131:1:C62'
GIR+4+0018C-0376:AN++JQ:AT' LIN+++83.25480-5026:IN' QTY+131:1:C62'
GIR+4+0018C-0373:AN++JR:AT' LIN+++36.25480-5649:IN' QTY+131:4:C62'
GIR+4+0012C-0613:AN++JR:AT' LIN+++36.25480-5649:IN' QTY+131:3:C62'
GIR+4+0018C-0374:AN++JR:AT' LIN+++36.25480-5649:IN' QTY+131:4:C62'
GIR+4+0012C-0614:AN++JR:AT' LIN+++36.25480-5649:IN' QTY+131:3:C62'
GIR+4+0012C-0615:AN++JR:AT' LIN+++36.25480-5649:IN' QTY+131:3:C62'

I just want to also add file names in every end of my record like as ;(Of course the "file names" have to match with their's records)

GIR+4+0018C-0376:AN++JQ:AT' LIN+++33.25480-5715:IN' QTY+131:1:C62'DVA.BPNE04.M.DELJIT101621
GIR+4+0018C-0376:AN++JQ:AT' LIN+++33.25480-5716:IN' QTY+131:1:C62'DVA.BPNE04.M.DELJIT101780
GIR+4+0018C-0376:AN++JQ:AT' LIN+++33.25480-5718:IN' QTY+131:1:C62'DVA.BPNE04.M.DELJIT101312
GIR+4+0018C-0376:AN++JQ:AT' LIN+++36.25480-5826:IN' QTY+131:1:C62'DVA.BPNE04.M.DELJIT102190
awk '/^GIR/ {GN = $0}; /^LIN/ {LN = $0} /^QTY/ {print GN, LN, $0, FILENAME}' DVA* >>$tarih_report1.txt
1 Like

Thank you very much Anbu ....Also there is no need to while...read cycle. ı have got the final_report just your command for my DVA* files