awk gsub with variables


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers awk gsub with variables
# 1  
Old 03-11-2013
awk gsub with variables

Hello,

I'm trying to substitute a string with leading zero for all the records except the trailer record using awk command and with variables. The input file test_med1.txt has data like below

Code:
1234ABC...........................9200............LF
456789.............................0401............LF

And I want to replace 9200 with 09200 and 0401 with 00401

Code:
1234ABC...........................09200............LF
456789.............................00401............LF

I tried below command but not successfull

Command :

Code:
a= cat test_med1.txt | awk '!/TLR/' |
  cut -c 65-84 b= `cat test_med1.txt |
  awk '!/TLR/' |
  cut -c 65-84 |
  awk '{$0=0$0;print}'`; awk -v rvar=${a} -v svar=${b} '{gsub(rvar,svar); print}' test_med1.txt

Error:
Code:
cut: 0653-132 Cannot open b=.
cut: 0653-132 Cannot open 09200.
cut: 0653-132 Cannot open 00401.
cut: 0653-132 Cannot open 07803.
cut: 0653-132 Cannot open 05400.
cut: 0653-132 Cannot open 02500.
cut: 0653-132 Cannot open 09901.
cut: 0653-132 Cannot open 00700.
awk: 0602-533 Cannot find or open file 07803.
The source line number is 1.


Please let me know where the command in failing and if it is complete wrong then let me know how to get above output using awk and gsub command


Thanks,
Somaraju

Last edited by Scott; 03-12-2013 at 12:33 AM.. Reason: You forgot to add code tags...
# 2  
Old 03-12-2013
How do you detect the strings to replace, e.g. by position in line?
How do you identify the trailer record?

And, yes, your command has large opportunities for improvement.
# 3  
Old 03-12-2013
If all you want to do is add a 0 after input character number 64 on lines that don't contain the string TLR, you don't need cat, cut, or gsub(); you just need awk's substr() and print functions.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Gsub function in awk

Hello, I had some difficulty to understand the gsub function and maybe the regex in this script to remove all the punctuations: awk 'gsub(//, " ", $0)' text.txtFile text.txt: This is a test for gsub I typed this random text file which contains punctuation like ,.;!'"?/\ etc. The script... (6 Replies)
Discussion started by: yifangt
6 Replies

2. Shell Programming and Scripting

awk gsub

Hi, I want to print the first column with original value and without any double quotes The output should look like <original column>|<column without quotes> $ cat a.txt "20121023","19301229712","100397" "20121023","19361629712","100778" "20121030A","19361630412","100838"... (3 Replies)
Discussion started by: ysrini
3 Replies

3. Shell Programming and Scripting

Awk; gsub in fields 3 and 4

I want to transform a log file into input for a database. Here's the log file: Tue Aug 4 20:17:01 PDT 2009 Wireless users: 339 Daily Average: 48.4285 = Tue Aug 11 20:17:01 PDT 2009 Wireless users: 295 Daily Average: 42.1428 = Tue Aug 18 20:17:01 PDT 2009 Wireless users: 294 Daily... (6 Replies)
Discussion started by: Bubnoff
6 Replies

4. Shell Programming and Scripting

awk gsub with variables?

Hey, I would like to replace a string by a new one. Teh problem is that both strings should be variables to be flexible, because I am having a lot of files (with the same structure, but in different folders) for i in daysim_* do cd $i/5/ folder=`pwd |awk '{print $1}'` awk '{ if... (3 Replies)
Discussion started by: ergy1983
3 Replies

5. Shell Programming and Scripting

Help with awk and gsub using C shell

Being new to awk, I am still running into little stupid things. For this issues I am trying to search for all occurrences of a string in a file and replace all of those occurrences with a replacement string. I tried doing awk '{gsub("|750101|", "|000000|", $0)}' infile > outfile Unix... (3 Replies)
Discussion started by: jclanc8
3 Replies

6. Shell Programming and Scripting

Awk gsub error.

I want to replace comma with space and "*646#" with space. I am using the following code: nawk -F"|" '{gsub(","," ",$3); gsub(/\*646\#/"," ",$3);print}' OFS="|" file I am getting following error: Help is appreciated (5 Replies)
Discussion started by: pinnacle
5 Replies

7. Shell Programming and Scripting

Awk Gsub Query

Hi, Can some one please explain the following line please throw some light on the ones marked in red awk '{print $9}' ${FTP_LOG} | awk -v start=${START_DATE} 'BEGIN { FS = "." } { old_line1=$0; gsub(/\-/,""); if ( $3 >= start ) print old_line1 }' | awk -v end=${END_DATE} 'BEGIN { FS="." } {... (3 Replies)
Discussion started by: crosairs
3 Replies

8. Shell Programming and Scripting

awk gsub

Hi all I want to do a simple substitution in awk but I am getting unexpected output. My function accepts a time and then prints out a validation message if the time is valid. However some times may include a : and i want to strip this out if it exists before i get to the validation. I have shown... (4 Replies)
Discussion started by: pxy2d1
4 Replies

9. Shell Programming and Scripting

Help with AWK and gsub

Hello, I have a variable that displays the following results from a JVM.... 1602100K->1578435K I would like to collect the value of 1578435 which is the value after a garbage collection. I've tried the following command but it looks like I can't get the > to work. Any suggestions as... (4 Replies)
Discussion started by: npolite
4 Replies

10. Shell Programming and Scripting

use var in gsub of awk

Hi all, This problem has cost me half a day, and i still do not know how to do. Any help will be appreciated. Thanks advance. I want to use a variable as the first parameters of gsub function of awk. Example: { ... arri]=gsub(i,tolower(i),$1) (which should be ambraced by //) ... } (1 Reply)
Discussion started by: summer_cherry
1 Replies
Login or Register to Ask a Question