grep“ something” anyfiles.log> afile.csv,不需要将输入路径和文件名打印到CSV文件


9

我有一些日志文件,它们有30000多行。我需要找到名称“ domain”并保存在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

亲切的问候,如果有人知道,请帮助我

Answers:


21

使用--no-filenamegrep选项。

在输出中禁止文件名的前缀。当仅搜索一个文件(或仅标准输入)时,这是默认设置。

grep --no-filename "domain" 

参考:Grep手册


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则可以解决问题。


man cut...听起来很痛苦。
马特·弗莱彻
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.