繁体   English   中英

在命令行中格式化 grep 输出

[英]Formatting grep output in command line

我使用以下 grep 命令在多个文件中搜索文本。

grep -w 'mytext' *.txt

现在我的结果是,

a.txt:mytext          32.15        
b.txt:mytext          27.65        
c.txt:mytext          37.95        

就像是

{filename}.{extension}:{searched-line}

但我想要这个结果如下格式:

{filename}:{searched-line}

只是我不想要那些文件的扩展名。 我怎样才能在命令行中做到这一点?

正如评论中所说,您可以将其通过管道传输到sed命令:

$ echo -e "a.txt:mytext 32.15\nb.tar.txt:mytext 34.15" | sed 's/\.[^:]*:/:/g'
a:mytext 32.15
b:mytext 34.15


$ echo -e "a.txt:mytext 32.15\nb.tar.txt:mytext 34.15" | sed 's/\.[^.:]*:/:/g'
a:mytext 32.15
b.tar:mytext 34.15

取决于您是否要保留子扩展名。

grep -w 'mytext' *.txt | sed 's/\.[^:]*:/:/g' 

或者

grep -w 'mytext' *.txt | sed 's/\.[^.:]*:/:/g' 

取决于你想要达到的目标。

使用awk您可以实现相同的目标:

$echo -e "a.txt:mytext 32.15\nb.tar.txt:mytext 34.15" | awk -F'\\.[^:]*:' 'BEGIN{OFS=":"}{print $1,$2}'
a:mytext 32.15
b:mytext 34.15

或者

$echo -e "a.txt:mytext 32.15\nb.tar.txt:mytext 34.15" | awk -F'\\.[^.:]*:' 'BEGIN{OFS=":"}{print $1,$2}'                                      
a:mytext 32.15
b.tar:mytext 34.15

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM