Подсчет слов и удаление строк из текстового файла в Unix - PullRequest
0 голосов
/ 15 апреля 2011

У меня к вам вопрос: у меня большой лог-файл, и я хочу его почистить.Меня интересуют только строки, содержащие определенное слово, и я хочу удалить другие строки.то есть:

access ok from place1
access ko from place1
access ok from place2
access ko from place2
access ok from place3
access ko from place3
......

И я хочу получить только запись 'place2':

access ok from place2
access ko from place2

Как я могу это сделать?Заранее спасибо!

Ответы [ 6 ]

4 голосов
/ 15 апреля 2011

grep "place2" / path / to / log / file> cleanedFile.txt

Я написал в блоге о комбинировании find / sed / grep - вас это может заинтересовать.

2 голосов
/ 15 апреля 2011

Попробуйте эту команду grep:

grep "\<place2\>" log-file > out-file

\< и \> обязательно найдут полное слово, поэтому inplace2 НЕ будет соответствовать.

1 голос
/ 15 апреля 2011
grep "\<place2\>" file.log > file.out
wc file.out 

wc (количество слов) для подсчета слов.Но для 2 вопросов, вы должны обычно открыть два вопроса.:)

0 голосов
/ 16 апреля 2011

Эти 2 примера также выполняют редактирование на месте.

$ awk '$NF=="place2"{print $0>FILENAME}' file

$ ruby -i.bak -ane 'print if $F[-1]=="place2"' file

Существуют и другие способы для файлов этих строк

sed -i.bak -n '/place2$/p' file

grep 'place2$' file > temp && mv temp file

Чисто используя оболочку

while read -r line; do case $line in  *place2) echo "$line";; esac; done < file > temp && mv temp file
0 голосов
/ 15 апреля 2011

В отличие от большинства других ответов, это изменяет файл на месте и не требует дальнейшего переименования.

sed -i -n '/place2/p' /var/log/file

Это предполагает GNU sed. Если у вас нет GNU sed, но есть perl:

perl -i -ne '/place2/ && print' /var/log/file
0 голосов
/ 15 апреля 2011

Еще один дубль, выберите строки, в которых 4-й столбец равен "place2"

awk '$4 == "place2"' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...