ファイルが2つあります
echo 'example.com/call_me?param' > file1.txt
echo 'example.com/call_me_maybe?param' >> file1.txt
echo 'example.com/call_me?' >> file1.txt
echo 'example.com/call_me?param' > file2.txt
echo 'example.com/call_me_maybe?' >> file2.txt
$ ag -v '\?param'
file2.txt
2:example.com/call_me_maybe?
file1.txt
3:example.com/call_me?
$ ag '\/call_me_maybe' -v '\?param'
ERR: Error stat()ing: \?param
ERR: Error opening directory \?param: No such file or directory
$ ag '\/call_me_maybe' -v '\?param' file1.txt
ERR: Error stat()ing: \?param
ERR: Error opening directory \?param: No such file or directory
file1.txt
1:example.com/call_me?param
3:example.com/call_me?
特定の用語を検索して他のパターンを除外したいです。 1つのコマンドでこれを行うことはできますか?
私はファイルを採掘するのでagを使いますlog.gz
。だからzgrep
orを使うことができますag -z
。
答え1
私はそれを使用しませんが、ag
マニュアルページによると、コマンドラインは次のようになります。
ag [options] pattern [path ...]
つまり、1つのモードしか許可されません。
grep
検索をリバース検索と組み合わせたい場合(例:検索を実行する)と同様に、a AND NOT b
出力をgrep -v ...
。例えば
ag '\/call_me_maybe' | grep -v '\?param'