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