我有
1 LINUX param1 value1
2 LINUXparam2 value2
3 SOLARIS param3 value3
4 SOLARIS param4 value4
Run Code Online (Sandbox Code Playgroud)
我需要在awk打印所有行中$2
是LINUX
.
Han*_*Gay 72
在awk
:
awk '$2 == "LINUX" { print $0 }' test.txt
Run Code Online (Sandbox Code Playgroud)
有关详细介绍,请参阅awk
示例awk
.
在sed
:
sed -n -e '/^[0-9][0-9]* LINUX/p' test.txt
Run Code Online (Sandbox Code Playgroud)
有关详细介绍,请参阅sed
示例sed
.
fed*_*qui 11
在这种情况下,您可以使用美丽的惯用语awk
:
awk '$2=="LINUX"' file
Run Code Online (Sandbox Code Playgroud)
那是:
awk
处于True条件时的默认操作是打印当前行.$2 == "LINUX"
每当第二个字段是LINUX时都是如此,这将打印出现这种情况的那些行.如果您要打印所有匹配的行,LINUX
无论它们是大写还是小写,请使用toupper()
以将它们全部大写:
awk 'toupper($2)=="LINUX"' file
Run Code Online (Sandbox Code Playgroud)
或者IGNORECASE
使用以下任一语法:
awk 'BEGIN {IGNORECASE=1} $2=="LINUX"' file
awk -v IGNORECASE=1 '$2=="LINUX"' file
Run Code Online (Sandbox Code Playgroud)
小智 8
我的回答很晚了,但没有人提到:
awk '$2~/LINUX/' file
Run Code Online (Sandbox Code Playgroud)
试试这些:
egrep -i '^\w+ LINUX ' myfile
awk '{IGNORECASE=1}{if ($2 == "LINUX") print}' myfile
sed -ne '/^[0-9]* [Ll][Ii][Nn][Uu][Xx] /p' myfile
Run Code Online (Sandbox Code Playgroud)
编辑:修改为不区分大小写
awk
我认为使用))包含“精确”和“部分匹配”案例可能是个好主意
因此,为了精确匹配:
OTHER_SHELL_COMMAND | awk '$2 == "LINUX" { print $0 }'
Run Code Online (Sandbox Code Playgroud)
对于部分匹配:
OTHER_SHELL_COMMAND | awk '$2 ~ /LINUX/ { print $0 }'
Run Code Online (Sandbox Code Playgroud)