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

Cha*_*ong 9 network-manager

我有一些日志文件,它们有 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
Run Code Online (Sandbox Code Playgroud)

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

Nem*_*emo 21

使用--no-filenamegrep 选项。

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

grep --no-filename "domain" 
Run Code Online (Sandbox Code Playgroud)

参考:Grep 手册


wal*_*tor 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就可以了。