Issue
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?
Solution
You need double quotes to allow variable interpolation, which means you then need to escape the other dollar signs with backslashes so $1
and $2
are not interpolated. Also you need double quotes around "$col1type"
.
awk "\$2>0 && \$1==\"$col1type\""
Answered By - John Kugelman Answer Checked By - Senaida (WPSolving Volunteer)