I've been trying to write a program in AWK for almost hours now to no avail and hence, I'm asking for help! so please help!
The program that I'm writing is meant to be an executable that accepts only one argument. The argument supplied to this program is then searched in a file and if it matches anything within this file, the line is printed onto the screen.
So, for instance, the following command:
awkprogram keyword
will return any lines within a file that contains the word keyword.
Now, the problems I'm facing!
Firstly, I cannot seem to find any way of embedding a file within the awk program so it can open it from within the script. I tried this:
at the beginning of the script but it returned as file not found.
I then tried to dig other things and came across getfile but that doesn't do anything for me either.
I then decided to give up the search and instead supplied the argument for the filename in the command so I could get the rest of the script to work and it just won't do what I want it to
I supply the command
I then use an if statement for the program to find the keyword by using the ARGV built-in array but it doesn't find anything. This is probably the sanest variation I tried and it brought nothing on the screen:
Can anyone please help? I just want to learn 1) how to open a file from within an awk script for execution and 2) how to find a pattern supplied to it from the command line in the form of an argument.
Any help or a lead in the right direction is much appreciated!
---------- Post updated at 02:22 AM ---------- Previous update was at 02:19 AM ----------
More simply, you can use the shell command:
---------- Post updated at 02:25 AM ---------- Previous update was at 02:22 AM ----------
Quote:
Originally Posted by kkhan00
can you elaborate on that? It went over my head. AWK dummy here
awk -vP="$1" '($0~P)' my_file
This set the first argument $1 of the script or function running that command into a variable (name randomly chosen) P
every line ($0) of my_file is check to see if match (~) the variable P if so, the default awk action is to print those that match the specified condition
It works for me on the command prompt but I'm not sure if it works within my program. Are you using AWK or AWK and something else?
Here is how my program looks right now:
The name = ARGV[1] seems to work but it doesn't search for the pattern in the if statement. I see you are using -v to identify variables and I tried to use that preceding 'name' but it didn't work.
Also, the -f filename causes an error.
---------- Post updated at 07:33 PM ---------- Previous update was at 07:32 PM ----------
I know there are ways around it in grep and sed and even perl but this is actually a lab and I'm only stuck with using AWK
---------- Post updated at 08:07 PM ---------- Previous update was at 07:33 PM ----------
Okay, I figured it out! woohoo!
The one above works just fine in finding the pattern!
If anyone knows how I can get the script to open the file internally that will be grateful! I'll still try digging myself!
I want the program to only accept one argument, and then find that argument within a predefined file inside the script. the -f option gives me a file not found error each time.
Maybe I just need to find the right location? hm,m
Good evening, Im newbie at unix specially with awk
From an scheduler program called Autosys i want to extract some data reading an inputfile that comprises jobs names, then formating the output to columns for example
1.
This is the inputfile:
$ more MapaRep.txt
ds_extra_nikira_usuarios... (18 Replies)
Hi,
I am trying to pass awk field to a command line executed within awk (need to convert a timestamp into formatted date).
All my attempts failed this far.
Here's an example.
It works fine with timestamp hard-codded into the command
echo "1381653229 something" |awk 'BEGIN{cmd="date -d... (4 Replies)
Hello experts,
I'm stuck with this script for three days now. Here's what i need.
I need to split a large delimited (,) file into 2 files based on the value present in the last field.
Samp: Something.csv
bca,adc,asdf,123,12C
bca,adc,asdf,123,13C
def,adc,asdf,123,12A
I need this split... (6 Replies)
Hi,
I have a situation to compare one file, say file1.txt with a set of files in directory.The directory contains more than 100 files.
To be more precise, the requirement is to compare the first field of file1.txt with the first field in all the files in the directory.The files in the... (10 Replies)
I have two files which I would like to compare and then manipulate in a way.
File1:
pictures.txt 1.1 1.3
dance.txt 1.2 1.4
treehouse.txt 1.3 1.5
File2:
pictures.txt 1.5 ref2313 1.4 ref2345 1.3 ref5432 1.2 ref4244
dance.txt 1.6 ref2342 1.5 ref2352 1.4 ref0695 1.3 ref5738 1.2... (1 Reply)
Hi
I have many problems with a script. I have a script that formats a text file but always prints the same error when i try to execute it
The code is that:
{
if (NF==17){
print $0
}else{
fields=NF;
all=$0;
while... (2 Replies)
Hi Experts,
I am adding a column of numbers with awk , however not getting correct output:
# awk '{sum+=$1} END {print sum}' datafile
2.15291e+06
How can I getthe output like : 2152910
Thank you..
# awk '{sum+=$1} END {print sum}' datafile
2.15079e+06 (3 Replies)
Actually I got a list of file end with *.txt
I want to use the same command apply to all the *.txt
Thus I try to find out the fastest way to write those same command in a script and then want to let them run automatics.
For example:
I got the file below:
file1.txt
file2.txt
file3.txt... (4 Replies)