使用'grep'提取精确匹配的字符串

时间:2018-03-26 06:22:07

标签: bash shell

我尝试使用.mkv mkv.mdgrep提取扩展名为 $ grep -i 'mkv' mkv.md ./Volumes/Transcend/Downloads/The.Adventure.of.English.Ep4.mkv ./Volumes/Transcend/Downloads/The.Adventure.of.English.Ep5.mkv ./Volumes/Transcend/Downloads/The.Adventure.of.English.Ep6.mkv ... 的文件

    /Volumes/Transcend/Downloads/The.Adventure.of.English.Ep4.mkv
    /Volumes/Transcend/Downloads/The.Adventure.of.English.Ep5.mkv
    /Volumes/Transcend/Downloads/The.Adventure.of.English.Ep6.mkv

输出中有一个领先的时期应该手动删除。 我想要的结果是(没有句号)

    grep -i '\/.*\.mkv' mkv.md
    ./Volumes/Transcend/Downloads/The.Adventure.of.English.Ep4.mkv
    ./Volumes/Transcend/Downloads/The.Adventure.of.English.Ep5.mkv
    ./Volumes/Transcend/Downloads/The.Adventure.of.English.Ep6.mkv
    ...

我尝试了同样的结果。

cd your-dir-need-nunjucks
cnpm install

如何解决问题?

3 个答案:

答案 0 :(得分:1)

如果你可以使用其他命令,cut可以提供帮助:

$ grep -i mkv mkv.md | cut -c 2-
/Volumes/Transcend/Downloads/The.Adventure.of.English.Ep4.mkv
/Volumes/Transcend/Downloads/The.Adventure.of.English.Ep5.mkv
/Volumes/Transcend/Downloads/The.Adventure.of.English.Ep6.mkv

答案 1 :(得分:0)

您可以使用剪切

cut -c 2- - 从第二个字符切换到字符串的结尾

在你的例子中:

grep -i 'mkv' mkv.md | cut -c 2-

此处有更多示例: https://en.wikipedia.org/wiki/Cut_(Unix)

答案 2 :(得分:0)

您可以使用-o
-o, - only-matching:仅打印行的匹配部分。

在你的例子中:

grep -io '\/.*\.mkv' mkv.md
#please note that you can combine multiple options as the above, or
grep -i -o '\/.*\.mkv' mkv.md