Sponsored Content
Top Forums Shell Programming and Scripting Need awk script to compare 2 fields in fixed length file. Post 302347444 by Muga801 on Tuesday 25th of August 2009 05:10:26 PM
Old 08-25-2009
Need awk script to compare 2 fields in fixed length file.

Need a script that manipulates a fixed length file that will compare 2 fields in that file and if they are equal write that line to a new file.

i.e. If fields 87-93 = fields 119-125, then write the entire line to a new file. Do this for every line in the file. After we get only the fields that have duplicates in a separate file, take that file and look in field 83, if it equals 66 or 88 then delete that line and save to a new file.

I would prefer not to do this in Perl, not many people in this office use or understand Perl. The files format is something like this:

Code:
6ZDA90603C5559518898683765109438327630000100000002132P008377612{22004020AZ 07332  195572A2008101645781015365999999SWZSHINABFMN                              PZTENNBD                    F                                  281808023Z19721202  365944281 00354299505F85323          CC0501AB            000900000000{  7242                                            2001A{{0000002132P00000000{0000000000{0000002132P0000000000{0000000000{0000000000{3{2004622008110109WC0725200810170830009031                                                       2008110320081103O001200401062004010699245                   00{00000000{00002132P00000000{NW0000{00000000{C00002132PA1                       AZ 270036484A01785306    207L00000XY1270036484    22O3R03MO   BZ 108  V       00                  0   E 03O00105
8WGB90603C000951889962167553050300000007900000234481K000000000{22007078AZ 97698  14084052008103120081024601502995SAZPERRY                              FRGWQFTY                                                     000066760S19760301  112321919400735900702F85613    F     AH0301AA            000800000000{  7244                                            2003A{{0000007854E00000000{0000007350{0000002607E0000000000{0000000000{0000000000{1A2004622008110109WC0725200811030860785028                                                       2007032176431103I00120040422200404229590059                 00D00002840{00000534E00000000{NW0000{00000000{B00000534E42                       AZ 860566486L00285635    2084N0400XY1             11O1A05ZZ   BZ 108WCW       00                  1 01E   O04113
6MDA90603C000951889962120083050300000007900000234481K000000000{22007078AZ 97698  14084053467103120081024601502995SAZPERRY                              MAINE                                                     785633760S19760301  112321919400735900702F85613    F     AH0301AA            000800000000{  7244                                            1822A{{0000002607E00000000{0022007350{0000002607E0468300000{0000000000{0000000000{1A2004622008110109WC0725200811030860785028                                                       2007032112541103I002200404222004042295904                   00D99992680{00001703{00000000{NW0000{67800000{B00001703{42                       AZ 860566486L00285635    2084N0400XY1             11O1A05ME   BZ 108WCW       00                  1 01E   O04013


Last edited by vgersh99; 08-25-2009 at 06:12 PM.. Reason: code tags, PLEASE!
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

fixed length fields in awk

I am trying to display df -h command out in proper format, how can I display each field of each record in a fixed length. (2 Replies)
Discussion started by: roopla
2 Replies

2. Shell Programming and Scripting

Awk with fixed length files

Hi Unix Champs, I want to awk on a fixed length file. Instead if the file was a delimited file, then I could have used -F and then could have easily done manipulation on the fields. How do i do the same in case of fixed length file? Thanks in Advance. Regards. (7 Replies)
Discussion started by: c2b2
7 Replies

3. Shell Programming and Scripting

Awk - Working with fixed length files

OK I am somewhat new to UNIX programming please see what you can do to help. I have a flat file that is a fixed length file containing different records based on the 1st character of each line. The 1st number at the beginning of the line is the record number, in this case it's record #1. I... (3 Replies)
Discussion started by: ambroze
3 Replies

4. UNIX for Dummies Questions & Answers

What the command to find out the record length of a fixed length file?

I want to find out the record length of a fixed length file? I forgot the command. Any body know? (9 Replies)
Discussion started by: tranq01
9 Replies

5. UNIX for Dummies Questions & Answers

Convert a tab delimited/variable length file to fixed length file

Hi, all. I need to convert a file tab delimited/variable length file in AIX to a fixed lenght file delimited by spaces. This is the input file: 10200002<tab>US$ COM<tab>16/12/2008<tab>2,3775<tab>2,3783 19300978<tab>EURO<tab>16/12/2008<tab>3,28523<tab>3,28657 And this is the expected... (2 Replies)
Discussion started by: Everton_Silveir
2 Replies

6. Shell Programming and Scripting

Fixed length fields

HPUX and posix shell Hi all. I have a record with fixed length fields....I would like to reorder the fields and preserver the fixed lengths.... cat test 4 960025460 Dept of Music 8 960025248 Dept of Music 12-08 cat... (3 Replies)
Discussion started by: lyoncc
3 Replies

7. Shell Programming and Scripting

awk to print fixed length columns to right side

Hi, I am in a situation to print the message on a column, where the each line starting position should be same. For example code: HOSTNAME1="1.2.3.4.5.6.7" TARGET_DIR="/tmp" echo "HOSTNAME1:" "$HOSTNAME1" | awk -v var="Everyone" '{len=55-length;printf("%s%*s\n",$0,len,var)}' echo... (4 Replies)
Discussion started by: tprabhaker
4 Replies

8. Shell Programming and Scripting

Splitting fixed length file using awk

Hi, I need to split a fixed length file of 160 characters based on value of a column. Example: ABC 456780001 DGDG SDFSF BCD 444440002 SSSS TTTTT ABC 777750003 HHHH UUUUU THH 888880001 FFFF LLLLLL HHH 999990002 GGGG OOOOO I need to split this file on basis of column from... (7 Replies)
Discussion started by: Neelkanth
7 Replies

9. Shell Programming and Scripting

Fixed Length file from a SQL script

Hi, I have a DB2 UDB 9.7 SQL script, as follows: I need to pass the script into Unix and generate a fixed length file from this. Can someone kindly provide a script to achieve it? SELECT CAST(COALESCE(CL_ID,'000000000') AS CHAR(9)) AS CL_ID ,STATUS... (5 Replies)
Discussion started by: ebsus
5 Replies

10. UNIX for Beginners Questions & Answers

Splitting the file based on two fields - Fixed length file

Hi , I am having a scenario where I need to split the file based on two field values. The file is a fixed length file. ex: AA0998703000000000000190510095350019500010005101980301 K 0998703000000000000190510095351019500020005101480 ... (4 Replies)
Discussion started by: saj
4 Replies
DOCHECKGROUPS(8)					    InterNetNews Documentation						  DOCHECKGROUPS(8)

NAME
docheckgroups - Process checkgroups and output a list of changes SYNOPSIS
docheckgroups [-u] [include-pattern [exclude-pattern]] DESCRIPTION
docheckgroups is usually run by controlchan in order to process checkgroups control messages. It reads a list of newsgroups along with their descriptions on its standard input. That list should be formatted like the newsgroups(5) file: each line contains the name of a newsgroup followed by one or more tabulations and its description. docheckgroups will only check the presence of newsgroups which match include-pattern (an egrep expression like "^comp..*$" for newsgroups starting with "comp.") and which do not match exclude-pattern (also an egrep expression) except for newsgroups mentioned in the pathetc/localgroups file. This file is also formatted like the newsgroups(5) file and should contain local newsgroups which would otherwise be mentioned for removal. There is no need to put local newsgroups of hierarchies for which no checkgroups control messages are sent, unless you manually process checkgroups texts for them. Lines beginning with a hash sign ("#") are not taken into account in this file. All the newsgroups and descriptions mentioned in pathetc/localgroups are appended to the processed checkgroups. If exclude-pattern is given, include-pattern should also be given before (you can use an empty string ("") if you want to include all the newsgroups). Be that as it may, docheckgroups will only check newsgroups in the top-level hierarchies which are present in the checkgroups. Then, docheckgroups checks the active and newsgroups files and displays on its standard output a list of changes, if any. It does not change anything by default; it only points out what should be changed: o Newsgroups which should be removed (they are in the active file but not in the checkgroups) and the relevant ctlinnd commands to achieve that; o Newsgroups which should be added (they are not in the active file but in the checkgroups) and the relevant ctlinnd commands to achieve that; o Newsgroups which are incorrectly marked as moderated or unmoderated (they are both in the active file and the checkgroups but their status differs) and the relevant ctlinnd commands to fix that; o Descriptions which should be removed (they are in the newsgroups file but not in the checkgroups); o Descriptions which should be added (they are not in the newsgroups file but in the checkgroups). The output of docheckgroups can be fed into mod-active (it will pause the news server, update the active file accordingly, reload it and resume the work of the news server) or into the shell (commands for ctlinnd will be processed one by one). In order to update the newsgroups file, the -u flag must be given to docheckgroups. When processing a checkgroups manually, it is always advisable to first check the raw output of docheckgroups. Then, if everything looks fine, use mod-active and the -u flag. OPTIONS
-u If this flag is given, docheckgroups will update the newsgroups file: it removes obsolete descriptions and adds new ones. It also sorts this file alphabetically and improves its general format (see newsgroups(5) for an explanation of the preferred number of tabulations). EXAMPLES
So as to better understand how docheckgroups works, here are examples with the following active file: a.first 0000000000 0000000001 y a.second.announce 0000000000 0000000001 y a.second.group 0000000000 0000000001 y b.additional 0000000000 0000000001 y b.third 0000000000 0000000001 y c.fourth 0000000000 0000000001 y the following newsgroups file (using tabulations): a.first First group. a.second.announce Announce group. a.second.group Second group. b.third Third group. c.fourth Fourth group. and the following localgroups file (using tabulations): b.additional A local newsgroup I want to keep. The checkgroups we process is in the file test which contains: a.first First group. a.second.announce Announce group. (Moderated) a.second.group Second group. b.third Third group. c.fourth Fourth group. If we run: cat test | docheckgroups docheckgroups will output that a.second.announce is incorrectly marked as unmoderated and that its description is obsolete. Besides, two new descriptions will be mentioned for addition (the new one for a.second.announce and the missing description for b.additional -- it should indeed be in the newsgroups file and not only in localgroups). Now that we have checked the output of docheckgroups and that we agree with the changes, we run it with the -u flag to update the newsgroups file and we redirect the standard output to mod-active to update the active file: cat test | docheckgroups -u | mod-active That's all! Now, suppose we run: cat test | docheckgroups "^c..*$" Nothing is output (indeed, everything is fine for the c.* hierarchy). It would have been similar if the test file had only contained the checkgroups for the c.* hierarchy (docheckgroups would not have checked a.* and b.*, even if they had been in include-pattern). In order to check both a.* and c.*, you can run: cat test | docheckgroups "^a..*$|^c..*$" And if you want to check a.* but not a.second.*, you can run: cat test | docheckgroups "^a..*$" "^a.second..*$" In our example, docheckgroups will then mention a.second.announce and a.second.group for removal since they are in the active file (the same goes for their descriptions). Notwithstanding, if you do want to keep a.second.announce, just add this group to localgroups and docheckgroups will no longer mention it for removal. FILES
pathbin/docheckgroups The Shell script itself used to process checkgroups. pathetc/localgroups The list of local newsgroups along with their descriptions. HISTORY
Documentation written by Julien Elie for InterNetNews. $Id: docheckgroups.pod 8357 2009-02-27 17:56:00Z iulius $ SEE ALSO
active(5), controlchan(8), ctlinnd(8), mod-active(8), newsgroups(5). INN 2.5.2 2009-05-21 DOCHECKGROUPS(8)
All times are GMT -4. The time now is 05:21 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy