![]() |
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here. |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Strip one line from 2 blank lines in a file | tipsy | Shell Programming and Scripting | 6 | 06-23-2008 09:14 AM |
| strip first 4 and last 2 lines from a file using perl | meghana | Shell Programming and Scripting | 10 | 02-01-2008 09:01 PM |
| How do you buffer streamed lines? | jjinno | Shell Programming and Scripting | 14 | 07-19-2007 04:36 PM |
| Strip 3 header lines and 4 trailer lines | ganesh123 | Shell Programming and Scripting | 9 | 03-10-2007 05:15 PM |
| Output every certain lines. | munnabhai1 | Shell Programming and Scripting | 1 | 04-06-2006 02:09 PM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
||||
|
How to Strip lines off Streamed EDI Output
Attached is a streamed EDI ANSI X12 output where the segment terminator/delimiter is a tilde ~ character.
Is it possible to do the following pseudo-code in a unix script (using either sed, awk and/or grep)? Open file StreamedOutput.txt Search for ISA and delete the data up to the tilde ~ char Search for GS and delete the data up to the tilde ~ char And write the ‘middle’ bit of data to the same filename. In other words I want to strip off the first (ISA) and last segment (GS) of this file all up to the tilde and leave me the bit of data in the middle. I tried to use the following script but not having much joy; x=`grep -n "ISA" StreamedOutput | cut -d "~" -f1` y=`grep -n "GS" StreamedOutput | cut -d "~" -f1` a=`echo ${x} + 1 | bc` b=`echo ${y} -1 | bc` echo $x $y $a $b sed -ne '${a},${b}p' StreamedOutput If I unstreamed the input data it looks like; ISA*HDR*START*US*0050000013~ BA1*Y**A*US*0050000013***TN****Federal Express~ YNQ*RZ*Y~ YNQ*QQ*Y~ DTM*274*081015~ N1*EX*Smith & Nephew, Inc.*24*510123924RT~ N2*1*9013995343~ N3*EAST HOLMES RD~ N4*Memphis*TN*38118*US~ N1**CAREY STEVE~ N3*1720 EAST BLACKHAWK DR~ N4*PHOENIX*AZ*85024*US~ N1*FW*Federal Express*24~ N3*123 Main~ N4*MEMPHIS*TN**US~ L13*A*9021.10.0050***10*20****K*0*Bone plates, screws & nails & other inte*OS*D~ L13*A*9021.31.0000***10*1000****K*0*Artificial joints & parts & accessories*OS*F~ L13*A*9021.31.0000***10*1000****K*0*Artificial joints & parts & accessories*OS*D~ GS*TRL*END*US*0050000013~ And the result I want is; BA1*Y**A*US*0050000013***TN****Federal Express~ YNQ*RZ*Y~ YNQ*QQ*Y~ DTM*274*081015~ N1*EX*Smith & Nephew, Inc.*24*510123924RT~ N2*1*9013995343~ N3*EAST HOLMES RD~ N4*Memphis*TN*38118*US~ N1**CAREY STEVE~ N3*1720 EAST BLACKHAWK DR~ N4*PHOENIX*AZ*85024*US~ N1*FW*Federal Express*24~ N3*123 Main~ N4*MEMPHIS*TN**US~ L13*A*9021.10.0050***10*20****K*0*Bone plates, screws & nails & other inte*OS*D~ L13*A*9021.31.0000***10*1000****K*0*Artificial joints & parts & accessories*OS*F~ L13*A*9021.31.0000***10*1000****K*0*Artificial joints & parts & accessories*OS*D~ |
![]() |
| Bookmarks |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|