我有一些日志文件,它们有 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
亲切的问候,如果有人知道,请帮助我
答案1
使用--no-filename
grep 的选项。
抑制输出时文件名的前缀。当只有一个文件(或只有标准输入)需要搜索时,这是默认设置。
grep --no-filename "domain"
参考:Grep 手册
答案2
请参阅man cut
详细信息,但简短的回答是grep "domain" /home/logs/*.log | cut -d: -f2 >newfile.csv
。
或者去看看man grep
并做grep -o "domain" /home/logs/*.log >newfile.csv
PS:如果命令行上只有一个文件,就像grep "domain" /home/logs/any.log
您的示例一样,grep 不会输出文件名。如果您想强制输出文件名,grep "domain" /home/logs/any.log /dev/null
可以使用这个方法。