Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Redirect output to the same input file in awk Post 302936516 by Don Cragun on Thursday 26th of February 2015 05:56:26 AM
Old 02-26-2015
Quote:
Originally Posted by stew
yes. your code is working perfectly. I am using this sample peice for puppet automation. so for awk part I don't hard code anything. I will write all vlaues to some other yaml file and will ivoke that value variable into puppet awk function.

so my code would be

Code:
awk '/kernel.sem/ { if(($3 + 0) < $value) sub($3, "$value") } 1' /etc/sysctl.conf >> /etc/sysctl.conf.bkp

so what my doubt is, when I use $value parameter should I still use +0 on this
I have no idea what peice, puppet automation, vlaues, nor yaml mean, and there is no puppet() function in this awk script??? The awk variable value is not defined in this script and comparing the number in field 3 of a line to the entire line as a string (containing something like:
Code:
kernel.sem = 250   32000   32      128250

which is what $undefined_variable will expand to in your awk script with your sample input file) is not what you want. If you want to parameterize the threshold value for changes instead of hard coding it to 300, you need something like:
Code:
value=300
awk -v val="$value" '
/^kernel.sem/ {
	if(($3 + 0) < val)
		sub($3, val "")
	else	exit(1)
}
1' sysctl.conf > sysctl.conf.mod && \
	mv sysctl.conf.mod sysctl.conf || \
	rm sysctl.conf.mod

Please DO NOT use the name sysctl.conf.bkp in this script. It is not a backup file; it is a temp file used as a work area for this script. And, if the number found in the 3rd field on the "kernel.sem" line is greater than or equal to your value variable, it will only contain a subset of your file (since this awk script returns an error status and stops processing input if it is not going to change that line. This file will NEVER contain the original contents of your input file unless your input file does not contain a line that contains the string "kernel.sem"! This leaves the current sysctl.conf in place (instead of replacing it with a copy of itself) if no changes are being made, and runs faster than processing the rest of the file and replacing an unmodified file.

Note that I added an anchor to the ERE selecting the line to be changed in case your configuration file might contain a comment that explains why kernel.conf is being set.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Input file redirect in output path and want name as inputfilename_new.txt

not required this time (6 Replies)
Discussion started by: Sandeep_Malik
6 Replies

2. Shell Programming and Scripting

awk should output if one input file doesnt have matching key

nawk -F, 'FNR==NR{a= $3 ;next} $2 in a{print $1, 'Person',$2, a}' OFS=, filea fileb Input filea Input fileb output i am getting : (2 Replies)
Discussion started by: pinnacle
2 Replies

3. Shell Programming and Scripting

Pass input and output file as parameter to awk script

Hi, i am new to awk. I am using csv2pipe script(shown below) BEGIN { FS=SUBSEP; OFS="|" } { result = setcsv($0, ",") print } # setcsv(str, sep) - parse CSV (MS specification) input # str, the string to be parsed. (Most likely $0.) # sep, the separator between the values. # #... (6 Replies)
Discussion started by: bhaskarjha178
6 Replies

4. Programming

Redirect input and output to a shell script?

Dear All: I am trying to do something that (I thought) was relatively straightforward, but my code snippet does not seem to work. Any suggestions? Thank you Sincerely yours Misha Koshelev #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include... (0 Replies)
Discussion started by: misha680
0 Replies

5. Shell Programming and Scripting

redirect an awk string output to a script input with pipes

Hi, I have a function in a bash script that returns a string after some operations using awk. The following code returns 555 $VARIABLE="EXAMPLE" get_number $VARIABLE this value I'd like to pass it as a second argument of another script with the following usage myscript.sh <param1>... (7 Replies)
Discussion started by: rid
7 Replies

6. UNIX for Advanced & Expert Users

Complex Input/Output Redirect

Hi All, Sorry if the title is not good but I did not know how to explain with only some words! What I meant is: I have a unix command built from a private application vendor that when executed it prompts for two entries by the keyboard, let's say, for example: ... (1 Reply)
Discussion started by: felipe.vinturin
1 Replies

7. Shell Programming and Scripting

AWK Script to convert input file(s) to output file

Hi All, I am hoping someone can help me with some scripting I need to complete using AWK. I'm trying to process multiple fixed files to generate one concatenated fixed file in a standard format. The Input file is:- aaaa bbbbb ccccc 1 xxxx aaa bbb aaaa bbbbb ccccc 2 abcd aaa CCC... (9 Replies)
Discussion started by: jason_v_brown
9 Replies

8. Shell Programming and Scripting

Read file from input and redirect to output file

Hi , i am having an file which contains 5 file_name data, i need to read the file name and will perform certain operation and generate out file names with named as 5 individual file_names for eg: file.txt contains file_name1.txt|hai file_name2.txt|bye file_name3.txt|how... (3 Replies)
Discussion started by: rohit_shinez
3 Replies

9. UNIX for Dummies Questions & Answers

awk - Rename output file, after processing, same as input file

I have one input file ABC.txt and one output DEF.txt. After the ABC is processed and created output, I want to rename ABC.txt to ABC.orig and DEF to ABC.txt. Currently when I am doing this, it does not process the input file as it cannot read and write to the same file. How can I achieve this? ... (12 Replies)
Discussion started by: High-T
12 Replies

10. Shell Programming and Scripting

awk to reformat output if input file is empty, but not if file has data in it

The below awk improved bu @MadeInGermany, works great as long as the input file has data in it in the below format: input chrX 25031028 25031925 chrX:25031028-25031925 ARX 631 18 chrX 25031028 25031925 chrX:25031028-25031925 ARX 632 14... (3 Replies)
Discussion started by: cmccabe
3 Replies
All times are GMT -4. The time now is 06:59 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy