01-02-2009
Problem working with Pipe Delimited Text file
Hello all:
I have a following textfile data with name inst1.txt
HDR|ABCD|10-13-2008 to 10-19-2008.txt|10-19-2008|XYZ
DTL|H|5464-1|0|02-02-2008|02-03-2008||||F|||||||||
DTL|D|5464-1|1|02-02-2008|02-03-2008|1||JJJ
DTL|D|5464-1|2|02-02-2008|02-03-2008|1||JJJ
DTL|D|5464-1|3|02-02-2008|02-03-2008|1||JJJ
DTL|D|5464-1|4|02-02-2008|02-03-2008|1||JJJ
DTL|H|7032-1|0|02-02-2008|02-03-2008||||F|||||||||
DTL|D|7032-1|1|02-02-2008|02-03-2008|1|M|yyy
DTL|D|7032-1|2|02-02-2008|02-03-2008|1|M|yyy
DTL|D|7032-1|3|02-02-2008|02-03-2008|1|N|yyy
DTL|D|7032-1|4|02-02-2008|02-03-2008|1|N|yyy
DTL|H|9999-1|0|02-02-2008|02-03-2008||||F|||||||||
DTL|D|9999-1|1|02-02-2008|02-03-2008|1|N|zzz
DTL|D|9999-1|2|02-02-2008|02-03-2008|1|N|zzz
TRL|ABCD|10-13-2008 to 10-19-2008.Txt|10-19-2008|170|XYZ
Output Needed in a new file is:
HDR|ABCD|10-13-2008 to 10-19-2008.txt|10-19-2008|XYZ
DTL|H|5464-1|0|02-02-2008|02-03-2008||||F|||||||||
DTL|D|5464-1|1|02-02-2008|02-03-2008|1||JJJ
DTL|D|5464-1|2|02-02-2008|02-03-2008|1||JJJ
DTL|D|5464-1|3|02-02-2008|02-03-2008|1||JJJ
DTL|D|5464-1|4|02-02-2008|02-03-2008|1||JJJ
TRL|ABCD|10-13-2008 to 10-19-2008.Txt|10-19-2008|170|XYZ
Criteria: To check if the 8th column is NULL
In the original file if the 8th column is NULL then throw all the records including the File Header, File Tail and Record Header which are:
File Header: HDR|ABCD|10-13-2008 to 10-19-2008.txt|10-19-2008|XYZ
File Tail: TRL|ABCD|10-13-2008 to 10-19-2008.Txt|10-19-2008|170|XYZ
Record Header:
DTL|H|5464-1|0|02-02-2008|02-03-2008||||F|||||||||
Record Detail:
DTL|D|5464-1|1|02-02-2008|02-03-2008|1||JJJ
DTL|D|5464-1|2|02-02-2008|02-03-2008|1||JJJ
DTL|D|5464-1|3|02-02-2008|02-03-2008|1||JJJ
DTL|D|5464-1|4|02-02-2008|02-03-2008|1||JJJ
Record Header and Record Detail are distuingished by the 2nd column H - Header & D - Detail
Part of the solution:
nawk -F'|' '$8 == "" ' inst1.txt >null.txt
The above command checks for 8th column and throws all the records to a new file null.txt and the new file looks as:
HDR|ABCD|10-13-2008 to 10-19-2008.txt|10-19-2008|XYZ
DTL|H|5464-1|0|02-02-2008|02-03-2008||||F|||||||||
DTL|D|5464-1|1|02-02-2008|02-03-2008|1||JJJ
DTL|D|5464-1|2|02-02-2008|02-03-2008|1||JJJ
DTL|D|5464-1|3|02-02-2008|02-03-2008|1||JJJ
DTL|D|5464-1|4|02-02-2008|02-03-2008|1||JJJ
DTL|H|7032-1|0|02-02-2008|02-03-2008||||F|||||||||
DTL|H|9999-1|0|02-02-2008|02-03-2008||||F|||||||||
TRL|ABCD|10-13-2008 to 10-19-2008.Txt|10-19-2008|170|XYZ
The ones in Red are Record Headers corresponding to different Records which shud not appear (but they appear as 8th column is NULL for these too)
Any help/suggestion/advice would be greately appreciated.
thanks,
Ravi
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I have a pipe delimited input file as below. First byte of the each line indicate the record type. Then i need to split the file based on record_type = null,0,1,2,6 and create 5 files. How do i do this in a ksh script? Pls help
|sl||SL|SL|SL|1996/04/03|1988/09/15|C|A|sl||||*|... (4 Replies)
Discussion started by: njgirl
4 Replies
2. UNIX for Dummies Questions & Answers
Hi,
I want to replace a field in a text delimited file with the actual number of records in the same file.
HDR|ABCD|10-13-2008 to 10-19-2008.txt|10-19-2008|XYZ
DTL|0|5464-1|0|02-02-2008|02-03-2008||||F|||||||||
DTL|1|5464-1|1|02-02-2008|02-03-2008|1||JJJ... (3 Replies)
Discussion started by: ravi0435
3 Replies
3. UNIX for Dummies Questions & Answers
Hey,
I am new to regualar expression. I wanted to extract the information from a pipe delimited file which has some entries like
L|S2CMG1B|||-11178399||1|-8.65|IRCSH|BOND||||N|S|IRDL|AUD||CRP|STD|CRP|M|0|1|||CSH||||OTHER|01|DE|KFW|50418Y9T5|||||||||||2||||||
In this I want to extract the... (1 Reply)
Discussion started by: leepan2008
1 Replies
4. Shell Programming and Scripting
i have a file whose data is like this::
osr_pe_assign|-120|wg000d@att.com|4|
osr_evt|-21|wg000d@att.com|4|
pe_avail|-21|wg000d@att.com|4|
osr_svt|-11|wg000d@att.com|4|
pe_mop|-13|wg000d@att.com|4|
instar_ready|-35|wg000d@att.com|4|
nsdnet_ready|-90|wg000d@att.com|4|... (6 Replies)
Discussion started by: priyanka3006
6 Replies
5. UNIX for Dummies Questions & Answers
I have a large(ish) pipe delimited file.
The last line of the file contains a total row count and a checksum:
END|1537451|1328569446
After making other adjustments to the file, I need to strip out the checksum and apply a new value - I have a script to generate the checksum and 'cat' it... (3 Replies)
Discussion started by: relentl3ss
3 Replies
6. Shell Programming and Scripting
Hi All,
I have space delimited file similar to the one as shown below.. I need to convert it as a pipe delimited, the values inside the pipe delimited file should be as highlighted...
AA ATIU2345098809 009697 005374
BB ATIU2345097809 005445 006518
CC ATIU9685098809 003215 003571
DD... (7 Replies)
Discussion started by: nithins007
7 Replies
7. Shell Programming and Scripting
this is Korn shell unix.
The scenario is I have a pipe delimited text file which needs to be customized. say for example,I have a pipe delimited text file with 15 columns(| delimited) and 200 rows. currently the 11th and 12th column has null values for all the records(there are other null columns... (4 Replies)
Discussion started by: vasan2815
4 Replies
8. Shell Programming and Scripting
I have a file which was pipe delimited, I need to make it tab delimited. I tried with sed but no use
cat file | sed 's/|//t/g'
The above command substituted "/t" not tab in the place of pipe.
Sample file:
abc|123|2012-01-30|2012-04-28|xyz
have to convert to:
abc 123... (6 Replies)
Discussion started by: karumudi7
6 Replies
9. Shell Programming and Scripting
Hi guys,
I need to know how i can ignore Pipe '|' if Pipe is coming as a column in Pipe delimited file
for eg:
file 1:
xx|yy|"xyz|zzz"|zzz|12...
using below awk command
awk 'BEGIN {FS=OFS="|" } print $3
i would get xyz
But i want as :
xyz|zzz to consider as whole column... (13 Replies)
Discussion started by: rohit_shinez
13 Replies
10. UNIX for Dummies Questions & Answers
Hi, I have a rquirement in unix as below .
I have a text file with me seperated by | symbol and i need to generate a excel file through unix commands/script so that each value will go to each column.
ex:
Input Text file:
1|A|apple
2|B|bottle
excel file to be generated as output as... (9 Replies)
Discussion started by: raja kakitapall
9 Replies
LEARN ABOUT OSX
datetime::locale::ku
DateTime::Locale::ku(3) User Contributed Perl Documentation DateTime::Locale::ku(3)
NAME
DateTime::Locale::ku
SYNOPSIS
use DateTime;
my $dt = DateTime->now( locale => 'ku' );
print $dt->month_name();
DESCRIPTION
This is the DateTime locale package for Kurdish.
DATA
This locale inherits from the DateTime::Locale::root locale.
It contains the following data.
Days
Wide (format)
2
3
4
5
6
7
1
Abbreviated (format)
2
3
4
5
6
7
1
Narrow (format)
2
3
4
5
6
7
1
Wide (stand-alone)
2
3
4
5
6
7
1
Abbreviated (stand-alone)
2
3
4
5
6
7
1
Narrow (stand-alone)
2
3
4
5
6
7
1
Months
Wide (format)
1
2
3
4
5
6
7
8
9
10
11
12
Abbreviated (format)
1
2
3
4
5
6
7
8
9
10
11
12
Narrow (format)
1
2
3
4
5
6
7
8
9
10
11
12
Wide (stand-alone)
1
2
3
4
5
6
7
8
9
10
11
12
Abbreviated (stand-alone)
1
2
3
4
5
6
7
8
9
10
11
12
Narrow (stand-alone)
1
2
3
4
5
6
7
8
9
10
11
12
Quarters
Wide (format)
Q1
Q2
Q3
Q4
Abbreviated (format)
Q1
Q2
Q3
Q4
Narrow (format)
1
2
3
4
Wide (stand-alone)
Q1
Q2
Q3
Q4
Abbreviated (stand-alone)
Q1
Q2
Q3
Q4
Narrow (stand-alone)
1
2
3
4
Eras
Wide
BCE
CE
Abbreviated
BCE
CE
Narrow
BCE
CE
Date Formats
Full
2008-02-05T18:30:30 = 3, 2008 2 05
1995-12-22T09:05:02 = 6, 1995 12 22
-0010-09-15T04:44:23 = 7, -10 9 15
Long
2008-02-05T18:30:30 = 2008 2 5
1995-12-22T09:05:02 = 1995 12 22
-0010-09-15T04:44:23 = -10 9 15
Medium
2008-02-05T18:30:30 = 2008 2 5
1995-12-22T09:05:02 = 1995 12 22
-0010-09-15T04:44:23 = -10 9 15
Short
2008-02-05T18:30:30 = 2008-02-05
1995-12-22T09:05:02 = 1995-12-22
-0010-09-15T04:44:23 = -010-09-15
Default
2008-02-05T18:30:30 = 2008 2 5
1995-12-22T09:05:02 = 1995 12 22
-0010-09-15T04:44:23 = -10 9 15
Time Formats
Full
2008-02-05T18:30:30 = 18:30:30 UTC
1995-12-22T09:05:02 = 09:05:02 UTC
-0010-09-15T04:44:23 = 04:44:23 UTC
Long
2008-02-05T18:30:30 = 18:30:30 UTC
1995-12-22T09:05:02 = 09:05:02 UTC
-0010-09-15T04:44:23 = 04:44:23 UTC
Medium
2008-02-05T18:30:30 = 18:30:30
1995-12-22T09:05:02 = 09:05:02
-0010-09-15T04:44:23 = 04:44:23
Short
2008-02-05T18:30:30 = 18:30
1995-12-22T09:05:02 = 09:05
-0010-09-15T04:44:23 = 04:44
Default
2008-02-05T18:30:30 = 18:30:30
1995-12-22T09:05:02 = 09:05:02
-0010-09-15T04:44:23 = 04:44:23
Datetime Formats
Full
2008-02-05T18:30:30 = 3, 2008 2 05 18:30:30 UTC
1995-12-22T09:05:02 = 6, 1995 12 22 09:05:02 UTC
-0010-09-15T04:44:23 = 7, -10 9 15 04:44:23 UTC
Long
2008-02-05T18:30:30 = 2008 2 5 18:30:30 UTC
1995-12-22T09:05:02 = 1995 12 22 09:05:02 UTC
-0010-09-15T04:44:23 = -10 9 15 04:44:23 UTC
Medium
2008-02-05T18:30:30 = 2008 2 5 18:30:30
1995-12-22T09:05:02 = 1995 12 22 09:05:02
-0010-09-15T04:44:23 = -10 9 15 04:44:23
Short
2008-02-05T18:30:30 = 2008-02-05 18:30
1995-12-22T09:05:02 = 1995-12-22 09:05
-0010-09-15T04:44:23 = -010-09-15 04:44
Default
2008-02-05T18:30:30 = 2008 2 5 18:30:30
1995-12-22T09:05:02 = 1995 12 22 09:05:02
-0010-09-15T04:44:23 = -10 9 15 04:44:23
Available Formats
d (d)
2008-02-05T18:30:30 = 5
1995-12-22T09:05:02 = 22
-0010-09-15T04:44:23 = 15
EEEd (d EEE)
2008-02-05T18:30:30 = 5 3
1995-12-22T09:05:02 = 22 6
-0010-09-15T04:44:23 = 15 7
Hm (H:mm)
2008-02-05T18:30:30 = 18:30
1995-12-22T09:05:02 = 9:05
-0010-09-15T04:44:23 = 4:44
hm (h:mm a)
2008-02-05T18:30:30 = 6:30 PM
1995-12-22T09:05:02 = 9:05 AM
-0010-09-15T04:44:23 = 4:44 AM
Hms (H:mm:ss)
2008-02-05T18:30:30 = 18:30:30
1995-12-22T09:05:02 = 9:05:02
-0010-09-15T04:44:23 = 4:44:23
hms (h:mm:ss a)
2008-02-05T18:30:30 = 6:30:30 PM
1995-12-22T09:05:02 = 9:05:02 AM
-0010-09-15T04:44:23 = 4:44:23 AM
M (L)
2008-02-05T18:30:30 = 2
1995-12-22T09:05:02 = 12
-0010-09-15T04:44:23 = 9
Md (M-d)
2008-02-05T18:30:30 = 2-5
1995-12-22T09:05:02 = 12-22
-0010-09-15T04:44:23 = 9-15
MEd (E, M-d)
2008-02-05T18:30:30 = 3, 2-5
1995-12-22T09:05:02 = 6, 12-22
-0010-09-15T04:44:23 = 7, 9-15
MMM (LLL)
2008-02-05T18:30:30 = 2
1995-12-22T09:05:02 = 12
-0010-09-15T04:44:23 = 9
MMMd (MMM d)
2008-02-05T18:30:30 = 2 5
1995-12-22T09:05:02 = 12 22
-0010-09-15T04:44:23 = 9 15
MMMEd (E MMM d)
2008-02-05T18:30:30 = 3 2 5
1995-12-22T09:05:02 = 6 12 22
-0010-09-15T04:44:23 = 7 9 15
MMMMd (MMMM d)
2008-02-05T18:30:30 = 2 5
1995-12-22T09:05:02 = 12 22
-0010-09-15T04:44:23 = 9 15
MMMMEd (E MMMM d)
2008-02-05T18:30:30 = 3 2 5
1995-12-22T09:05:02 = 6 12 22
-0010-09-15T04:44:23 = 7 9 15
ms (mm:ss)
2008-02-05T18:30:30 = 30:30
1995-12-22T09:05:02 = 05:02
-0010-09-15T04:44:23 = 44:23
y (y)
2008-02-05T18:30:30 = 2008
1995-12-22T09:05:02 = 1995
-0010-09-15T04:44:23 = -10
yM (y-M)
2008-02-05T18:30:30 = 2008-2
1995-12-22T09:05:02 = 1995-12
-0010-09-15T04:44:23 = -10-9
yMEd (EEE, y-M-d)
2008-02-05T18:30:30 = 3, 2008-2-5
1995-12-22T09:05:02 = 6, 1995-12-22
-0010-09-15T04:44:23 = 7, -10-9-15
yMMM (y MMM)
2008-02-05T18:30:30 = 2008 2
1995-12-22T09:05:02 = 1995 12
-0010-09-15T04:44:23 = -10 9
yMMMEd (EEE, y MMM d)
2008-02-05T18:30:30 = 3, 2008 2 5
1995-12-22T09:05:02 = 6, 1995 12 22
-0010-09-15T04:44:23 = 7, -10 9 15
yMMMM (y MMMM)
2008-02-05T18:30:30 = 2008 2
1995-12-22T09:05:02 = 1995 12
-0010-09-15T04:44:23 = -10 9
yQ (y Q)
2008-02-05T18:30:30 = 2008 1
1995-12-22T09:05:02 = 1995 4
-0010-09-15T04:44:23 = -10 3
yQQQ (y QQQ)
2008-02-05T18:30:30 = 2008 Q1
1995-12-22T09:05:02 = 1995 Q4
-0010-09-15T04:44:23 = -10 Q3
yyQ (Q yy)
2008-02-05T18:30:30 = 1 08
1995-12-22T09:05:02 = 4 95
-0010-09-15T04:44:23 = 3 -10
Miscellaneous
Prefers 24 hour time?
Yes
Local first day of the week
2
SUPPORT
See DateTime::Locale.
AUTHOR
Dave Rolsky <autarch@urth.org>
COPYRIGHT
Copyright (c) 2008 David Rolsky. All rights reserved. This program is free software; you can redistribute it and/or modify it under the
same terms as Perl itself.
This module was generated from data provided by the CLDR project, see the LICENSE.cldr in this distribution for details on the CLDR data's
license.
perl v5.16.2 2013-08-25 DateTime::Locale::ku(3)