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

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

我有一些日志文件,它们有 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-filenamegrep 的选项。

抑制输出时文件名的前缀。当只有一个文件(或只有标准输入)需要搜索时,这是默认设置。

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可以使用这个方法。

相关内容