Formatting File Using Shell Script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Formatting File Using Shell Script
# 1  
Old 08-09-2012
Formatting File Using Shell Script

Hi Team,

We have a requirement where we need to format input file using shell script by meeting the below conditions.

1. 1. Ignore first 549 characters of that file.

2. 2. After that we need to make a file of 100 characters per line, repeat it until the 3rd condition is met.

3. 3. If the word ‘CONTRA' is found in any line, where in that line C is at character position 65 and ends at A with the character position at 70 then stop the processing, rest of data needs to be removed including the ‘CONTRA' line from that file.

For Ex if the input file is
Code:
  VOL1000000                               851447                                1^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  HDR1A851447S         00000000010001       12199 12201 000000                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  HDR2F0200000100                                   00                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  UHL1 12200999999    000000001 DAILY  001          0000                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ******************^^^^^^^^^^^^^^
  5555555555555555555555555555555    5555555555555555 44444445 555AAAAAA            ZXXXXCONTRACTORS      
  5555555555555555555555555555555    5555555555555555 44444445 555AAAAAA            ZXXXXXXXXXXXXXXXXX      
  5555555555555555555555555555555    5555555555555555 44444445 555AAAAAA            ZXXXXXXXXXXXXXXXXX      
  5555555555555555555555555555555    5555555555555555 44444445 555CONTRA            ZXXXXXXXXXXXXXXXXX      
  5555555555555555555555555555555    5555555555555555 44444445 555AAAAAA            ZXXXXXXXXXXXXXXXXX      
  5555555555555555555555555555555    5555555555555555 44444445 555AAAAAA            ZXXXXXXXXXXXXXXXXX


My script should show only the records in brown color as below
Code:
  5555555555555555555555555555555    5555555555555555 44444445 555AAAAAA            ZXXXXCONTRACTORS       
  5555555555555555555555555555555    5555555555555555 44444445 555AAAAAA            ZXXXXXXXXXXXXXXXXX      
  5555555555555555555555555555555    5555555555555555 44444445 555AAAAAA            ZXXXXXXXXXXXXXXXXX     


Any suggestions/opinions will be highly appreciated.

Thanks,
Ajay

Last edited by Franklin52; 08-09-2012 at 06:00 AM.. Reason: Please use code tags for data and code samples
# 2  
Old 08-09-2012
Try this:
Code:
awk '$4 ~ /CONTRA$/{exit} $1 ~ /^[0-9]/' file

# 3  
Old 08-09-2012
I am getting output as
awk: record `60021351261367099500...' has too many fields
record number 6
Can you please elaborate what the above command will do..

I have also tried to do it but my code is having some loop holes.
# 4  
Old 08-09-2012
Try sed with extended regex, assuming the leading 549 chars are in 5 first lines which will be deleted:
Code:
sed  -r '1,5d; /^.{66}CONTRA/,$d'

Any line after and including the line containing CONTRA in col 67 (= your sample file above! Adapt the 66 if need be) will be deleted as well. I can't guarantee though the line length of 100 chars, as it does not modify the lines printed.
# 5  
Old 08-09-2012
Quote:
Originally Posted by ataneja7
I am getting output as
awk: record `60021351261367099500...' has too many fields
record number 6
Can you please elaborate what the above command will do..

I have also tried to do it but my code is having some loop holes.
Does the file have another format then you provide in your first post?
Anyway try nawk or /usr/xpg4/bin/awk on Solaris.

Explanation:
Code:
awk '$4 ~ /CONTRA$/{exit} $1 ~ /^[0-9]/' file

If the 4th field ends with "CONTRA" exit
If the 1st field start with a number print the line.
# 6  
Old 08-09-2012
Hi Rudic/Franklin52,

I am able to remove first 549 characters and then reformatting every line of 100 characters.

The only problem i am facing is that i am not able to delete data from the line i encounter CONTRA word where C is at character position 65 and ends at A with position 70.

ps: yes Franklin52 i have formatted input file which has a bit diffn format. from the one posted above.
eg.

VOL1000000 851447 1^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
HDR1A851447S 00000000010001 12199 12201 000000 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
HDR2F0200000100 00 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UHL1 12200999999 000000001 DAILY 001 0000 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
******************^^^^^^^^^^^^^^
5555555555555555555555555555555 5555555555555555 44444445 555AAAAAA ZXXXXCONTRACTORS
5555555555555555555555555555555 5555555555555555 44444445 555AAAAAA ZXXXXXXXXXXXXXXXXX
5555555555555555555555555555555 5555555555555555 44444445 555AAAAAA ZXXXXXXXXXXXXXXXXX
5555555555555555555555555555555 555555555 55555 44444445 555CONTRA ZXXXXXXXXXXXXXXXXX
5555555555555555555555555555555 5555555555555555 44444445 555CONTRA ZXXXXXXXXXXXXXXXXX
5555555555555555555555555555555 5555555555555555 44444445 555AAAAAA ZXXXXXXXXXXXXXXXXX
# 7  
Old 08-09-2012
Could you please post the output of above sed command applied to the file you have given in post #1? Given that file (including 2 leading spaces per line), the sed cmd yields
Code:
  5555555555555555555555555555555    5555555555555555 44444445 555AAAAAA            ZXXXXCONTRACTORS      
  5555555555555555555555555555555    5555555555555555 44444445 555AAAAAA            ZXXXXXXXXXXXXXXXXX      
  5555555555555555555555555555555    5555555555555555 44444445 555AAAAAA            ZXXXXXXXXXXXXXXXXX

which is what you desired...? If there's no leading spaces, reduce the 66 to 64 in the cmd.
Does your sed version support the -r option (use extended regex)?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need some help in formatting answer of shell script

Dear all, I am new to shell scripting and have tried to make a small program for fun sake that tells age from the last number of cell phone and birth year. At the end we get a final 3 digit number and the first digit represents the last digit of cell phone and rest 2 numbers shows age. eg. 423... (4 Replies)
Discussion started by: stg44
4 Replies

2. Shell Programming and Scripting

Formatting a file using shell script

Hi, Please find the below lines of a file B1/OT "GIB10" 837 130308 1351 MONORONOUS DIGI PATH FAULT SUPER B1/OT "GIB10" 520 130418 1537 MONORONOUS DIGI PATH FAULT SUPER B1/XT "GIB10" 762 130421 0653 TV Y-CEIVER ADMIN RXOCF-62 241_OKEBOLE_NEW 1 B1/XT "GIB10" 385 130425 1931 TV Y-CEIVER... (2 Replies)
Discussion started by: Ardhendu
2 Replies

3. Shell Programming and Scripting

AWK/Shell script for formatting data in a file

Hi All, Need an urgent help to convert a unix file in to a particular format: **source file:** 1111111 2d2f2h2 3dfgsd3 ........... 1111111 <-- repeats in every nth line. remaining all lines will be different 123ss41 432ff45 ........... 1111111 <-- repetition qwe1234 123weq3... (1 Reply)
Discussion started by: rajivnairfis
1 Replies

4. Shell Programming and Scripting

formatting a shell script

there is one shell which calls for different sql scripts. output of different are formatted in frame like structure.i want columnar wise formatting to be done in such a manner that output of one sql may be comon input of rest sqls . ERC DML Closure Date ER DML SAP Transfer Date ... (0 Replies)
Discussion started by: arc
0 Replies

5. Shell Programming and Scripting

Shell Script Problems, Lose formatting when copy pasting from formatted file.

Hello, I'm having trouble with formatting some text via the terminal. I can get it perfectly formatted, but when I try and copy paste the text from the output file it loses it's formatting. Very frustrating! Basically I have 7 files (data data2 data3 data4 data5 data6 data7) containing a... (13 Replies)
Discussion started by: facetoe
13 Replies

6. Shell Programming and Scripting

Formatting a file using shell script

I have a file with contents something similar to as below : SVCNAME,12m-1a,1a-2a,2a-3a,3a-4a,5a-6a,6a-7a,7a-8a,8a-9a,9a-10a,10a-11a,11a-12n,12n-1p,13p-14p,14p-15p,15p-16p,16p-17p,17p-18p,18p-19p,19p-20p,20p-21p,21p-22p,22p-23p,11p-12m, TOTALS... (5 Replies)
Discussion started by: deo_kaustubh
5 Replies

7. Shell Programming and Scripting

Date formatting in shell script

Hi, I am writing a script and I need to calculate last weeks date. I get the current date as; today=`date '+%Y%m%d'` and I need last week inthe same format. Thanks, (2 Replies)
Discussion started by: ozum
2 Replies

8. Shell Programming and Scripting

Formatting the text file using shell script

How to add the filename to end of each line with | as seperator, except first and last line of the file(s) in directories(with diff tree structure) using shell script?. And also how to replace a list of strings with another set of strings, which is present in a file?. Kindly help out on... (1 Reply)
Discussion started by: av_vinay
1 Replies

9. Shell Programming and Scripting

formatting a file using shell script

Hi I have to do the following.I have to format a file test.t The contents are # Header 1231 xyz asdf asdapsdcsd //string1 = "pqrs" //string1 = "abcd"; //info //string1 = "*pqrs"; //add string1 = "#123"; //sub //string1 = "#1234567890" data = check(string1) //string1 = "#1234567890"... (12 Replies)
Discussion started by: gopsman
12 Replies

10. Shell Programming and Scripting

Formatting lines in shell script

I have a file with the below lines 1521 1522 1523 1524 1525 1526 ... 174 lines all numbers like above. I want the above file to appear as below. 1521,1522,1523,1524..... All the numbers should be separated by comma. Pls tell me how to do this .... Thanks in advance. (8 Replies)
Discussion started by: dreams5617
8 Replies
Login or Register to Ask a Question