簡體   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