Squidログファイルをクリーンアップしようとしており、列11に「/0/」を含むサイトの行を削除したいと思います。一例:
Row1: column1, column2, column3...column10, ht*p://blah.com/page/230/0/blah0.html
Row2: column1, column2, column3...column10, ht*p://narph0.net/page/328/narph.htm
Row3: column1, column2, column3...column10, ht*p://www.yahata.org/things/time/0/yahata.php
Row4: column1, column2, column3...column10, ht*p://www.the.com/thethat/que303/yeah/main.php
stackexchangeはこれを実際のリンクと見なすため、「http」の「*」を無視します。
デフォルトでは、行1と3は削除し、行2と4は維持したいと思います。私は私が見つけたり考えることができるすべて、およびgrep
コマンドを試しました。awk
column1 に要素がある場合はsed
削除できますが、他の要素は削除できません。grep
答え1
/0/
最後の列がない行が欲しいようです。次のようにできます。
grep -v '[^[:blank:]]*/0/[^[:blank:]]*$' file.txt
例:
% grep -v '[^[:blank:]]*/0/[^[:blank:]]*$' file
Row2: column1, column2, column3...column10, ht*p://narph0.net/page/328/narph.htm
Row4: column1, column2, column3...column10, ht*p://www.the.com/thethat/que303/yeah/main.php
一方、列 11 と正確に一致させるには、次のようにします。
grep -vE '^([^[:blank:]]+[[:blank:]]+){10}[^[:blank:]]*/0/[^[:blank:]]*$' file.txt
例: 列 5 一致
% grep -vE '^([^[:blank:]]+[[:blank:]]+){4}[^[:blank:]]*/0/[^[:blank:]]*$' file
Row2: column1, column2, column3...column10, ht*p://narph0.net/page/328/narph.htm
Row4: column1, column2, column3...column10, ht*p://www.the.com/thethat/que303/yeah/main.php