我有
1 LINUX param1 value1
2 LINUXparam2 value2
3 SOLARIS param3 value3
4 SOLARIS param4 value4
我需要awk来打印$2
为LINUX
的所有行。
答案 0 :(得分:66)
在awk
:
awk '$2 == "LINUX" { print $0 }' test.txt
有关awk
的详细介绍,请参阅awk
by Example。
在sed
:
sed -n -e '/^[0-9][0-9]* LINUX/p' test.txt
有关sed
的详细介绍,请参阅sed
by Example。
答案 1 :(得分:4)
尝试这些:
egrep -i '^\w+ LINUX ' myfile
awk '{IGNORECASE=1}{if ($2 == "LINUX") print}' myfile
sed -ne '/^[0-9]* [Ll][Ii][Nn][Uu][Xx] /p' myfile
编辑:针对不区分大小写进行了修改
答案 2 :(得分:3)
在GNU sed
中,可以使用I
修饰符进行不区分大小写的匹配:
sed -n '/^[^[:space:]][[:space:]]\+linux[[:space:]]\+/Ip'
将强大匹配“linux”,“Linux”,“LINUX”,“LiNuX”等作为第二个字段(在第一个字段之后可能是任何非空白字符)并包围任何数量(至少一个)任何空格(主要是空格和制表符,尽管您可以使用[:blank:]
将其限制为严格限制)。
答案 3 :(得分:1)
我的回答很晚,但是没有人提到:
awk '$2~/LINUX/' file