У меня есть несколько файлов журналов, в них более 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
С уважением, пожалуйста, помогите мне, если кто-нибудь знает
Используйте опцию --no-filename
для grep.
Подавить префикс имен файлов при выводе. Это значение по умолчанию, когда для поиска требуется только один файл (или только стандартный ввод).
blockquote>grep --no-filename "domain"
Ссылка: Руководство по Grep
Подробнее см. 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
добьется цели.