gmail
単語やカテゴリを探していますoutlook
。一部の行はコメントアウトされていgmail
ますoutlook
。私は何をgrep
すべきですか?
私はたくさん試してみましたが、次のようになると思いました。
grep "^[^#;]" | egrep -i "gmail|outlook" *.ksh > a.log
ベストアンサー1
そしてgrep
:
grep -P '^(?=[\s]*+[^#])[^#]*(gmail|outlook)' file
-P
Perl準拠の正規表現を有効にします。^(?=...)
パターンの一部ではないキャプチャグループ(プレビュー、Perl拡張)を定義します。これは^
行の始まりを意味します。- このグループは内部的に
\s
すべての空白文字と一致し、*+
空白と0回以上一致し、貪欲です(Perl拡張子)。 [^#]
一致しないすべての項目と一致します#
。
- このグループは内部的に
[^#]*
キャプチャグループの外側に#
0回以上存在しない文字を再一致させます。(gmail|outlook)
最後の試合gmail
またはoutlook
さまざまな例を使用してテストファイルを作成しました。
$ cat file
# outlook
blah gmail # this should match
# gmail
# gmail
# foo
blah outlook # this should match
outlook blah # gmail - this should match
foobar # gmail
bar
another gmail # this should match
出力は次のとおりです
blah gmail # this should match
blah outlook # this should match
outlook blah # gmail - this should match
another gmail # this should match
もちろん、*.ksh
すべてのファイルに対してこのコマンドを実行できます。
grep -P '^(?=[\s]*+[^#])[^#]*(gmail|outlook)' *.ksh > a.log