Reputation: 2913
I have:
1 LINUX param1 value1
2 LINUXparam2 value2
3 SOLARIS param3 value3
4 SOLARIS param4 value4
I need awk to print all lines in which $2
is LINUX
.
Upvotes: 71
Views: 145428
Reputation: 71949
In awk
:
awk '$2 == "LINUX" { print $0 }' test.txt
See awk
by Example for a good intro to awk
.
In sed
:
sed -n -e '/^[0-9][0-9]* LINUX/p' test.txt
See sed
by Example for a good intro to sed
.
Upvotes: 111
Reputation: 8330
I think it might be a good idea to include "exact" and "partial matching" cases using awk
))
So, for exact matching:
OTHER_SHELL_COMMAND | awk '$2 == "LINUX" { print $0 }'
And for partial matching:
OTHER_SHELL_COMMAND | awk '$2 ~ /LINUX/ { print $0 }'
Upvotes: 5
Reputation: 291
My answer is very late, but no one has mentioned:
awk '$2~/LINUX/' file
Upvotes: 18
Reputation: 289745
This is a case in which you can use the beautiful idiomatic awk
:
awk '$2=="LINUX"' file
That is:
awk
when in a True condition is to print the current line.$2 == "LINUX"
is true whenever the 2nd field is LINUX, this will print those lines in which this happens.In case you want to print all those lines matching LINUX
no matter if it is upper or lowercase, use toupper()
to capitalize them all:
awk 'toupper($2)=="LINUX"' file
Or IGNORECASE
with either of these syntaxs:
awk 'BEGIN {IGNORECASE=1} $2=="LINUX"' file
awk -v IGNORECASE=1 '$2=="LINUX"' file
Upvotes: 27
Reputation: 360105
In GNU sed
case-insensitive matches can be made using the I
modifier:
sed -n '/^[^[:space:]][[:space:]]\+linux[[:space:]]\+/Ip'
Will robustly match "linux", "Linux", "LINUX", "LiNuX" and others as the second field (after the first field which may be any non-whitespace character) and surrounded by any amount (at least one) of any whitespace (primarily space and tab, although you can use [:blank:]
to limit it to strictly those).
Upvotes: 4
Reputation: 2556
Try these out:
egrep -i '^\w+ LINUX ' myfile
awk '{IGNORECASE=1}{if ($2 == "LINUX") print}' myfile
sed -ne '/^[0-9]* [Ll][Ii][Nn][Uu][Xx] /p' myfile
edit: modified for case insensitivity
Upvotes: 6