grep «something» anyfiles.log afile.csv, не нужно печатать путь ввода и имя файла в файл CSV

9

У меня есть несколько файлов журналов, у них более 30000 строк. Мне нужно найти имя «домен» и сохранить в CSV-файле, но после сохранения в любой строке CSV-файла были добавлены путь и имя файла входных файлов в начале самой строки файла CSV. Как я могу сделать, если мне не нужно, чтобы путь и имя входного файла добавлялись в файлы CSV.

Пример:

Input
#cat /home/log/any.log

any things..domain, anything
any things..domain, anything
any things..domain, anything


grep "domain" /home/logs/any.log > newfile.csv

Output:
#cat newfile.csv
/home/logs/any.log:domain
/home/logs/any.log:domain
/home/logs/any.log:domain


#----My requirement output is:

cat newfile.csv
domain
domain
domain

С уважением, пожалуйста, помогите мне, если кто-нибудь узнает

    
задан Chaxiong 25.01.2013 в 02:25
источник

2 ответа

22

Используйте параметр --no-filename для grep.

  

Подавить префикс имен файлов на выходе. Это значение по умолчанию, если для поиска есть только один файл (или только стандартный ввод).

grep --no-filename "domain" 

Ссылка: Руководство Grep

    
ответ дан Nemo 25.01.2013 в 08:04
1

Подробнее см. в man cut , но короткий ответ - grep "domain" /home/logs/*.log | cut -d: -f2 >newfile.csv .

Или посмотрите man grep и сделайте grep -o "domain" /home/logs/*.log >newfile.csv

PS: grep НЕ выводит имя файла, если в командной строке есть только один файл, например grep "domain" /home/logs/any.log . Если вы хотите принудительно выводить имена файлов, grep "domain" /home/logs/any.log /dev/null выполнит трюк.

    
ответ дан waltinator 25.01.2013 в 07:43