我使用以下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}
我只是不想扩展那些文件。我怎么能在命令行中这样做?
答案 0 :(得分:1)
如评论中所述,您可以将其传递给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