[英]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.