I have a text file which I want to filter using awk. The text file looks like this:
foo 1
bar 2
bar 0.3
bar 100
qux 1033
I want to filter those files with awk inside a bash script.
#!/bin/bash
#input file
input=myfile.txt
# I need to pass this as parameter
# cos later I want to make it more general like
# coltype=$1
col1type="foo"
#Filters
awk '$2>0 && $1==$col1type' $input
But somehow it failed. What's the right way to do it?
pass it in using -v
option of awk
. that way, you separate out awk variables and shell variables. Its neater also without extra quoting.
#!/bin/bash
#input file
input=myfile.txt
# I need to pass this as parameter
# cos later I want to make it more general like
# coltype=$1
col1type="foo"
#Filters
awk -vcoltype="$col1type" '$2>0 && $1==col1type' $input
"double quote single quote"
awk '{print "'$1'"}'
example:
$./a.sh arg1
arg1
$cat a.sh
echo "test" | awk '{print "'$1'"}'
linux tested
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With