私はうまく使用しました:
grep -wFf inputqueries.txt seachedfile.txt > results.txt
inputqueries.txtの各クエリに対してsearchedfile.txtを検索します。
inputqueries.txt は次のようになります。
213.183.56.186
216.176.100.240
216.215.112.149
217.23.49.178
222.29.197.232
23.235.201.32
23.253.150.120
202.112.166.5
searchedfile.txt は次のようになります。
168.68.129.127 184.73.191.34
199.133.78.171 202.112.166.5
64.180.139.190 199.141.121.11
199.133.186.162 128.118.250.5
54.145.167.92 168.68.129.73
199.154.229.66 23.75.15.164
162.79.16.103 199.134.135.69
results.txtが正しいです。
199.133.78.171 202.112.166.5
残念ながらそしてそれが私の成功が止まったところです。これを現実世界に適用してみるとうまくいきません。ゼロ個の結果を返すたびに。
私は(IPの代わりに)単語クエリリストと同じinputqueries.txtファイルを使用しました。また、実際のログファイルディレクトリへの書き込み権限がなく、ほとんどのログが次のように圧縮されることも注目に値します。.gz.また、複数の類似ファイルを同時に検索したい(zcat http、zcat conn。*など)
zcat filestosearch.* | grep -wFf /home/username/inputqueries.txt > /home/username/results.txt
動作しません(-wFを削除してgrep -fをそのままにしても機能しません)。
zgrep -wFf /home/username/inputqueries.txt filestosearch.* > /home/username/results.txt
動作しませんでした。
実生活で検索したログは異なりますが、httpは次のとおりです...(どちらも兄弟ログです)
1432343999.435553 CuCcn04H20cc2ZHyEh 202.170.48.4 50501 197.138.26.55 80 4 GET ndb.nal.usda.gov /ndb/search/autosuggest?manu=&fgcd=&term=Coconut+milk http://ndb.nal.usda.gov/ndb/foods?fgcd=&manu=&lfacet=&count=&max=35&sort=&qlookup=Oil%2C+palm&offset=&format=Abridged&new=&measureby= Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.65 Safari/537.36 0 12994 200 OK - - - (empty) - - - - - FGGh0g4a24L8Q6CZUb text/plain
1432343999.382108 CKPWGW2cubkRjFpTKf 197.166.19.125 63803 54.191.210.216 80 1 GET client.ql2.com /cc/diff/http.www.ars.usda.gov/_22Fpandp_22Flocations_22FcityPeopleList.cfm_23Fmodecode_23D60-64-05-10/20150409123538diff.html - WebTrends/3.0 (WinNT) 00 302 Moved Temporarily - - - (empty) - - - - - - -
1432343999.595036 Cz4XJl3uaq2Fxc0M9a 63.248.145.199 63004 197.155.76.112 80 1 GET start2farm.gov /sites/all/themes/contrib/twitter_bootstrap/images/arrow-green.png http://start2farm.gov/ Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko 0 1498 200 OK - - - (empty) - - - - - Fo69Ao3w36RxKcoH9f image/png
1432343999.732470 CTPQZyQ7tX7BUjU5j 197.123.240.10 56863 216.58.217.132 80 36 GET toolbarqueries.google.com /tbr?client=navclient-auto&ch=63738508926&features=Rank&q=info:/url?q=http://www.ncbi.nlm.nih.gov/books/NBK8125/&sa=U&ei=FjjmVJriAceagwSM1oOIDg&ved=0CBsQFjAB&usg=AFQjCNHgMKW6EIWKxclKB9o-o21bQu7IOw - Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618) 0 5928 403 Forbidden - -- (empty) - - - - - F2UdRnxrFUEHJFdW4 text/html
最も簡単な1行コマンドを使用してファイルでgrepを機能させるにはどうすればよいですか?
答え1
\r
問題は、Windowsのある時点でファイルが編集され、最後に通常表示されない追加の文字が追加されたようです。
そのコマンドがあれば、dos2unix
それを使用してファイルを変換できます。これがなく、行末に重要なスペースがない場合は、次のようにGNU sedを使用して実行できます。
sed -i -e 's/\s*$//' inputqueries.txt
ファイル(-i
フラグ)をその場で変更し、行末のスペースをスペースなしで置き換えて効果的に削除します。 -i
ただし、これはPOSIXの一部ではないため、移植可能なソリューションが必要な場合は、コマンドの残りの部分を使用して一時ファイルにsed
リダイレクトできます。ファイルが正しいと確信している場合は、実際に希望のファイルに名前を変更してください。