私が持っています
1 LINUX param1 value1
2 LINUXparam2 value2
3 SOLARIS param3 value3
4 SOLARIS param4 value4
$2
がLINUX
であるすべての行を印刷するには、awkが必要です。
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 を参照してください。
これは、美しい慣用句awk
を使用できる場合です。
_awk '$2=="LINUX"' file
_
あれは:
awk
のデフォルトアクションは、現在の行を出力することです。$2 == "LINUX"
_は2番目のフィールドがLINUXの場合は常にtrueであるため、これが発生する行を出力します。大文字か小文字かに関係なく、LINUX
に一致するすべての行を印刷する場合は、 toupper()
を使用してすべてを大文字にします。
_awk 'toupper($2)=="LINUX"' file
_
または、次の構文のいずれかでIGNORECASE
:
_awk 'BEGIN {IGNORECASE=1} $2=="LINUX"' file
awk -v IGNORECASE=1 '$2=="LINUX"' file
_
これらを試してください:
egrep -i '^\w+ LINUX ' myfile
awk '{IGNORECASE=1}{if ($2 == "LINUX") print}' myfile
sed -ne '/^[0-9]* [Ll][Ii][Nn][Uu][Xx] /p' myfile
編集:大文字と小文字を区別しないように変更
In GNU sed
大文字と小文字を区別しない一致は、I
修飾子を使用して行うことができます。
sed -n '/^[^[:space:]][[:space:]]\+linux[[:space:]]\+/Ip'
「linux」、「Linux」、「LINUX」、「LiNuX」などの2番目のフィールド(最初のフィールドのany非空白文字の後に続く)および任意の量で囲まれたものと強固に一致します。 (少なくとも1つの)任意の空白(主にスペースとタブ。ただし、[:blank:]
厳密にそれらに制限します)。