The code vgersh99 provided:
uses the awk utility to run the awk commands:
{printf ((FNR>1 && /^[0-9]/)?RS:"" ) $0} which runs for each line read from an input file calling the printf() function with a single argument that is the concatenation of two strings:
the record separator (RS, which defaults to the <newline> character) if the line number within the current in put file is greater than 1 (FNR>1) and (&&) the first character on that line is not a digit (/^[0-9]/); or the empty string ("") otherwise, and
the contents of the current input line without the trailing <newline> character($0), and
END {print""} which prints a <newline> character after the last line in the last given input file,
with one input file to be processed (myfile).
Since the 1st (and only) argument given to the printf() function in this code is a format string, this is a little bit dangerous. If any lines in your input file contain backslash (\) or percent-sign (%) characters, the printf() function interprets those characters in the format string argument as requests to perform formatting functions. The following might be a little bit safer:
or more simply:
which behaves like vgersh99's script except the format string argument now contains a %s format specifier to print a string argument, and the contents of the current line are given as a 2nd argument to printf().
These 2 Users Gave Thanks to Don Cragun For This Post:
The code vgersh99 provided:
uses the awk utility to run the awk commands:
{printf ((FNR>1 && /^[0-9]/)?RS:"" ) $0} which runs for each line read from an input file calling the printf() function with a single argument that is the concatenation of two strings:
the record separator (RS, which defaults to the <newline> character) if the line number within the current in put file is greater than 1 (FNR>1) and (&&) the first character on that line is not a digit (/^[0-9]/); or the empty string ("") otherwise, and
the contents of the current input line without the trailing <newline> character($0), and
END {print""} which prints a <newline> character after the last line in the last given input file,
with one input file to be processed (myfile).
Since the 1st (and only) argument given to the printf() function in this code is a format string, this is a little bit dangerous. If any lines in your input file contain backslash (\) or percent-sign (%) characters, the printf() function interprets those characters in the format string argument as requests to perform formatting functions. The following might be a little bit safer:
or more simply:
which behaves like vgersh99's script except the format string argument now contains a %s format specifier to print a string argument, and the contents of the current line are given as a 2nd argument to printf().
I'm trying to create a shell script that takes a awk script that I wrote and a filename as an argument. I was able to get that done but I'm having trouble figuring out how to keep the header of the output at the top but sort the rest of the rows alphabetically. This is what I have now but it is... (1 Reply)
Hi
I have a text file (Input.txt) with two column entries separated by tab as given below:
aaa str1
bbb str2
cccccc str3
dddd str4
eee str3
ssss str2
sdf str3
hhh str1
fff str2
ccc str3
.....
.....
..... (1 Reply)
I have a shell script (.sh) and I want to pass a parameter value to the awk command but I am getting exception, please assist.
diff=$1$2.diff
id=$2 new=new_$diff
echo "My id is $1"
echo "I want to sync for user account $id"
##awk command I am using is as below
cat $diff |... (1 Reply)
Discussion started by: Sarita Behera
1 Replies
4. Post Here to Contact Site Administrators and Moderators
Variable I have in my shell script
diff=$1$2.diff
id=$2
new=new_$diff
echo "My id is $1"
echo "I want to sync for user account $id"
##awk command I am using is as below
cat $diff | awk -F'~' ''$2 == "$id"' {print $0}' > $new
I could see value of $id is not passing to the awk... (0 Replies)
I am getting the following error while passing parameter to a shell script called within awk script. Any idea what's causing this issue and how to ix it ? Thanks
sh: -c: line 0: syntax error near unexpected token `newline'
sh: -c: line 0: `./billdatecalc.sh ... (10 Replies)
This is the final first release of the dynamic menu generator for pekwm (WM).
#!/bin/bash
function param_val {
awk "/^${1}=/{gsub(/^${1}="'/,""); print; exit}' $2
}
echo "Dynamic {"
for CF in `ls -c1 /usr/share/applications/*.desktop`
do
name=$(param_val Name $CF)
... (3 Replies)
hi everyone
i am trying to do this
bash> cat abc.sh
deepak()
{
echo Deepak
}
deepak
bash>./abc.sh
Deepak
so it is giving me write simply i created a func and it worked
now i modified it like this way
bash> cat abc.sh (2 Replies)
Hello,
I have this awk script that I want to execute by passing parameters through a shell script.
I'm a little confused. This awk script removes duplicates from an input file.
Ok, so I have a .sh file called rem_dups.sh
#!/usr/bin/sh... (4 Replies)
Hi guys
I have a shell script that executes sql statemets and sends the output to a file.the script takes in parameters executes sql and sends the result to an output file.
#!/bin/sh
echo " $2 $3 $4 $5 $6 $7
isql -w400 -U$2 -S$5 -P$3 << xxx
use $4
go
print"**Changes to the table... (0 Replies)