AWKの逆正規表現?

AWKの逆正規表現?

特定の単語を含む行をフィルタリングしようとしています。正規表現はスクリプトへのコマンドライン入力です。

$0 ~ regex {
//Do something.
}

入力例は次のとおりです。

**String** **number**
domain  1
domain  2
bla     3

したがって、上記の入力では、ユーザーは「domain」という単語を含む行をフィルタリングすると言うことができます。

私が試したこと:

regex = "\?\\!domain" 

(負の予測)。

ただし、この正規表現はすべての行をフィルタリングします。 「ドメイン」という単語を含む行だけではありません。

ベストアンサー1

input以下を含む特定の入力ファイルの場合:

domain
demesne

以下を含むフィルタラインdomain:

$ awk '/domain/ { print }' input
domain

行フィルタリングいいえ含むdomain:

$ awk '!/domain/ {print }' input
demesne

フィルタリング基準大地フル行ではなく、新しい与えられたファイルで次のことを試すことができますinput

example www.example.com
exemplar www.example.net

最初のフィールドによる行のフィルタリング含む example:

$ awk '$1 !~ /example/ { print }' input
exemplar www.example.net

あなたの質問では、$0最初のフィールドの代わりに行全体を使用しています。

おすすめ記事