Reputation: 28379
My dummy file looks like this:
C1 C2 C3
1 a snow
2 b snowman
snow c sowman
I want to get line if there is string snow
in $3. I can do this like this:
awk '($3=="snow" || $3=="snowman") {print}' dummy_file
But there should be more simpler way.
Upvotes: 124
Views: 327088
Reputation: 857
It is far past the post date, but if you are not married to the awk
and just want something to pull those lines, you can just use:
less -f dummy_file | grep snow
And I use less
because cat
does not handle UTF-8 very well
Note: this will check every line for the presence of snow
Upvotes: 0
Reputation: 1581
Also possible by looking for substring with index() function:
awk '(index($3, "snow") != 0) {print}' dummy_file
Shorter version:
awk 'index($3, "snow")' dummy_file
Upvotes: 61
Reputation: 37589
sed '/\s*\(\S\+\s\+\)\{2\}\bsnow\(man\)\?\b/!d' file
Input:
C1 C2 C3 1 a snow 2 b snowman snow c sowman snow snow snowmanx
..output:
1 a snow 2 b snowman
Upvotes: 1
Reputation: 85883
Print lines where the third field is either snow
or snowman
only:
awk '$3~/^snow(man)?$/' file
Upvotes: 10
Reputation: 8429
Maybe this will help
http://www.math.utah.edu/docs/info/gawk_5.html
awk '$3 ~ /snow|snowman/' dummy_file
Upvotes: 13