Problem with an awk Script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem with an awk Script
# 1  
Old 05-05-2010
Problem with an awk Script

hello,

first, yes i searched the forum , google and read many tutorials but still have a problem with my script.
I have great Problems, because i haven't worked with regular expressions before and never had anything to do with shellscripts. i am a complete Newby in this sort of theme.

I have many Files (end with .per) where RECORD should be renamed in Grid, thats easy with sed but now is the problem not everytime there is Record as text it should be renamed. It should only be renamed when after the RECORD(can be record with only small characters,too) if after the RECORD there is a blank(multiple blanks possible,too) then text(starts with a alphanumeric character but then there can be "_", Numbers in the text) .Following there must be a "[ one or 2 numbers ]".

EDIT:
I forgot to mention, that the the Files are not the same und die column and Row where it stands can differ from File to File, in the same file the searched pattern can exist multiple times. That means the script has to search each file from head to toe.

Examples:
Code:
RECORD s[11]
RECORD s_lt[6]
RECORD sn[9]
RECORD         f1035a[12]

This is the script i have written so far.
Code:
#!/bin/bash

for i in `ls *.per`; do

echo $i
awk '/ *[a-zA-Z]*\[0-9]|[0-9][0-9]\]/ {gsub(/RECORD/,"GRID");}' $i

done

Thank you for your help

Last edited by Crashvogel; 05-05-2010 at 07:04 AM.. Reason: Forgot some information
# 2  
Old 05-05-2010
Is your example file input?

Could you please show expected output from your example?

Does RECORD occur multiple times on one line? IF record is lower case do you want "grid" or "GRID"?
# 3  
Old 05-05-2010
The example is how it is written in the file.
The Output should be:
Code:
GRID s[11]
GRID s_lt[6]
GRID sn[9]
GRID         f1035a[12]

The RECORD statement is only once per Line,
but as stated before can be in multiple lines in the same file.

I always want the uppercase "GRID"

Thank you for your help
# 4  
Old 05-05-2010
I am not sure of the requirement , but based on the input and ouput you are providing i suggest :

Code:
 
sed 's/RECORD/GRID/g' input_file > output_file

# 5  
Old 05-05-2010
Quote:
Originally Posted by panyam
I am not sure of the requirement , but based on the input and ouput you are providing i suggest :

Code:
 
sed 's/RECORD/GRID/g' input_file > output_file


That is not possible because in the Files are other Record statement
e.g
Code:
SCREEN RECORD f1051b(...)
SCREEN RECORD erfass    (...)

These RECORD differ ([] is not()) and are not allowed to get replaced, thats why the requirement is
RECORD name[number from 1-99]

Thank you for your Help
# 6  
Old 05-05-2010
Based on your examples:
Code:
$ cat bla.txt
RECORD s[11]
RECORD s_lt[6]
RECORD sn[9]
RECORD         f1035a[12]
SCREEN RECORD f1051b(123)
SCREEN RECORD erfass    (456)
$ perl -pe 's/^RECORD(\s+[\w_]+\[\d{1,2}\])/GRID$1/' bla.txt
GRID s[11]
GRID s_lt[6]
GRID sn[9]
RECORD         f1035a[12]
SCREEN RECORD f1051b(123)
SCREEN RECORD erfass    (456)

# 7  
Old 05-05-2010
An awk version:
Code:
 
 
awk '$0 ~ /\[[0-9]*\]/ {gsub("RECORD","GRID");print;next} {print}' input_file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk script problem

Hello guys i have following problem. I'm trying to copy content of one file and paste this content in all .txt files in directory, but at line 15. My script copy the content at first line, not 15. I'm confused how to do this. Thank you in advance for your help! This is my script: ARGS=2 ... (9 Replies)
Discussion started by: r00ty
9 Replies

2. Shell Programming and Scripting

Awk Script Problem

Can someone please explain to me what is wrong with this awk script? echo 74 85 | awk '{ if ( $1 > $2 ) PRESULTS = ( $1 - $2 ); print $0,"=>","P"PRESULTS ; else if ( $1 > $2 ) NRESULTS = ( $2 - $1... (3 Replies)
Discussion started by: SkySmart
3 Replies

3. Shell Programming and Scripting

problem with awk script

Hi, I have two files Hi, I have two files file1 :> Code: val="10" port="localhost:8080"httpadd="http:\\192.168.0.239" file2 :> Code: val=${val} val="pdssx" port=${port}port="1324"httpadd=${httpadd}httpadd="raamraav"fileloc=${fileloc} file3(or file2) should have following... (1 Reply)
Discussion started by: nitin.pathak
1 Replies

4. Shell Programming and Scripting

Awk script Problem

Hi , I am having two files FILE1 and FILE2 as shown below I need to search each and every element of Coulumn1 in the FILE1 in FILE2 and Globally replace with the Corresponding element of the Column2 in the FILE2 , For example and1 which is the first element of COl 1 of the FILE1 should be... (4 Replies)
Discussion started by: jaita
4 Replies

5. Shell Programming and Scripting

Problem with awk script

Hi, I have one csv file with 3 fileds like tmp1.csv 2079|2010Aug|cardilogy 2349|2010Aug|numerology 2213|2010Aug|immunlogy another csv file with code for those specialities spec.csv cardiology|CRD numerology|NMY immunology|IMY i want to replace the contents of file 1 with codes... (2 Replies)
Discussion started by: Man83Nagesh
2 Replies

6. Shell Programming and Scripting

awk script problem

Hi All, I have the following input data: That I'd like to look like this ($2 is the column I'd like it to appear in) where the entries are grouped by date: The code I have at present is: awk 'BEGIN {} { dt = $1 if (dt == dt_prev) { pp = $3 ... (7 Replies)
Discussion started by: pondlife
7 Replies

7. Shell Programming and Scripting

Problem with a AWK Script

Hi I am having some contents in my file like this file1 ########################## pin (PIN1) { direction : input ; capacitance : 121 ; max_transition : 231 ; } pin (PIN2) { direction : input ; capacitance : 124 ; max_transition : 421 ;... (8 Replies)
Discussion started by: kshitij
8 Replies

8. Shell Programming and Scripting

Problem with awk script

Hi Can anyone help me in this Problem File1 ######################### HOLI 123 AND ONE TWO THREE AMITABH SAMSUNG POLI AND TWO SENSE CRYING WING PPIN TBFLAG I B AND OROLE TB_HOT=" DCT" TB_CAT=" CAT" TC_NOT=" AND" +PIN TB=" HOT" TB_GATE=" KOT" TB_LATE=" MAT" TC=LOT MAT DAT SAT... (5 Replies)
Discussion started by: kshitij
5 Replies

9. Shell Programming and Scripting

Problem with one awk script

Hi , I am having a file having the contents like this file1 ##################### kite kshitij jolly admire in the wing and tell me the secret behind opus 123 and the right of the track ######################### I have to write one awk script to substitue some values with other... (6 Replies)
Discussion started by: kshitij
6 Replies

10. Shell Programming and Scripting

awk script Problem

I wrote a awk but doesnt work as expected. The Input File attached input file My awk Script /^.......*EXEC CICS /,/END-EXEC/ { if ( $0 ~ / LINK / ) { tsflag=1 } if ( $0 ~ /EXEC CICS/ && tsflag == 1 ) ... (6 Replies)
Discussion started by: pbsrinivas
6 Replies
Login or Register to Ask a Question