in line modification in a file using awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting in line modification in a file using awk
# 1  
Old 02-05-2011
in line modification in a file using awk

Hi,
I have a conf.file with the following values:
Code:
    ef=78
    b=40
    ca=40
    c=45/dev2

when I modify one of the line with the below awk script,it's modifying BUT it's placing the modified line in the last line :
input:- Configure b 45/dev4
output:-
Code:
    ef=78
    ca=40
    c=45/dev2
    b=45/dev4

Is it possible to have the modified line in the same place where it's in the original file so that it will be easy to take diff.

following is my awk script:
Code:
CONFIG_FILE=conf.file
cp -p "$CONFIG_FILE" "$CONFIG_FILE.orig.`date \"+%Y%m%d_%H%M%S\"`"
/usr/xpg4/bin/awk -v key="$1" -v val="$2" 'match($1,"^"key"=") == 0 && match($1,"^""="val) != 0 {print key"="val}
        match($1,"^"key"=") == 0 && match($1,"^""="val) == 0 {print $0}
        END {print key"="val}' "$CONFIG_FILE" >"$CONFIG_FILE~" && mv "$CONFIG_FILE~" "$CONFIG_FILE"

Thanks for your help...

Last edited by Scott; 02-05-2011 at 06:34 AM.. Reason: Code tags
axes
# 2  
Old 02-05-2011
Alternatively,
Code:
key_id=b
new_val="45/dev4"
while IFS="=" read key val
do
 if [ "$key" = "$key_id" ]; then
   echo "$key=$new_val"
 else 
  echo "$key=$val"
 fi
done < conf.file


Please use code tags next time.
# 3  
Old 02-05-2011
Try:
Code:
awk '$1~"^"key"="{sub(/[^=]+$/,val)}1' key="$1" val="$2" "$CONFIG_FILE"

or
Code:
sed "/[ \t]*$1=/s|=.*|=$2|" "$CONFIG_FILE"


Last edited by Scrutinizer; 02-05-2011 at 07:35 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Printing string from last field of the nth line of file to start (or end) of each line (awk I think)

My file (the output of an experiment) starts off looking like this, _____________________________________________________________ Subjects incorporated to date: 001 Data file started on machine PKSHS260-05CP ********************************************************************** Subject 1,... (9 Replies)
Discussion started by: samonl
9 Replies

2. Shell Programming and Scripting

Modification to awk command

i have a php file that has this: php.code #!/usr/bin/php <?php phpinfo(); hlight_file(__FILE__); ?> I want my awk code grab whatever is inbetween and including the "<?php" and "?>". Then, it should scan all the entries between these two points. And if the entries between these... (10 Replies)
Discussion started by: SkySmart
10 Replies

3. Shell Programming and Scripting

awk script modification

can someone help me identify what i'm doing wrong here: awk -F'|' 'BEGIN{c=0} /./ && /./ { if ($3 < 2) { print ; c++ } END { print c":OK" } else if (($3 >= 2) && ($3 < 4)) { print ; c++ } END { print c":WARNING" } else if ($3 >= 4) { print ; c++ } END { print c":CRITICAL" } }'... (4 Replies)
Discussion started by: SkySmart
4 Replies

4. Shell Programming and Scripting

awk script modification - treat certain files differently

awk 'BEGIN{OFS=","} FNR == 1 {if (NR > 1) {print fn,fnr,nl} fn=FILENAME; fnr = 1; nl = 0} {fnr = FNR} /UNUSUAL/ && /\.gz/ ~ /FILENAME/ {nl++} <'{system ("gunzip -cd FILENAME")}' END ... (2 Replies)
Discussion started by: SkySmart
2 Replies

5. Shell Programming and Scripting

IP Address Modification through awk/sed

Hi, I have to modify the 2nd and 3rd octet of the IP address through awk/sed. For Example: Given IP is : 10.205.22.254, it should be modified as 10.105.100.254 through awk/sed. Kindly help me on this and let me know if you have any questions. Thanks in advances. (2 Replies)
Discussion started by: kumarbka
2 Replies

6. UNIX for Dummies Questions & Answers

awk output modification

Hello, I am using awk command to print some output, but there are some characters that I would like to remove from the output awk '{print $5$6}' the output I get is column5/:column6 I am looking forward to remove the : and to get the output column5/column6 Sorry if this question is... (4 Replies)
Discussion started by: Error404
4 Replies

7. Shell Programming and Scripting

awk modification for lines

so i have this data in a file: jime=1860,yime=1.23243,lime= jime=1859,yime=1.23018,lime= jime=1825,yime=1.15371,lime= jime=1849,yime=1.20769,lime= jime=1841,yime=1.1897,lime= jime=1849,yime=1.20769,lime= i use this code to calculate the percentage difference of the number in column 2... (9 Replies)
Discussion started by: SkySmart
9 Replies

8. Shell Programming and Scripting

awk script modification

I want the below script to omit every chunk of data that contains a specific hostname. here's the scenario. i have a configuration file that contains the configuration of several hosts. a sample of this configuration file is this: define host { address ... (12 Replies)
Discussion started by: SkySmart
12 Replies

9. Shell Programming and Scripting

Awk modification

I need help modifying the code below. DATAFILE is a log file. I have two strings i need to search for in the log file. The two strings are: 1. ERROR 2. com.rolander.promotions.client awk 'BEGIN { while((getline < "'${SFILE}'")>0) S FS="\n"; RS="\n" } (11 Replies)
Discussion started by: SkySmart
11 Replies

10. Shell Programming and Scripting

Awk not working due to missing new line character at last line of file

Hi, My awk program is failing. I figured out using command od -c filename that the last line of the file doesnt end with a new line character. Mine is an automated process because of this data is missing. How do i handle this? I want to append new line character at the end of last... (2 Replies)
Discussion started by: pinnacle
2 Replies
Login or Register to Ask a Question