使用grep命令提取单词

3

这是我的文件。

    this is temp1
    this is temp2
    this is temp3

如何使用grep命令,当查找模式为“temp”时,结果只显示“temp1,temp2,temp3”,而不是整个句子。谢谢。
3个回答

12

你可以使用-o选项

$ grep -o "temp[0-9]"

非常感谢。如果我想提取不同的单词,以防止重复单词怎么办? - bookishq
也许你可以使用uniq命令... grep -o "temp[0-9]" | uniq - ymonad

3

你可能想要将grepsed结合使用。sed使用Perl风格的正则表达式,提供了更强大的模式匹配功能(至少在我看来是这样)。以下命令可以得到你所需的内容:

grep temp yourFileName | sed -e "s/.*(temp[0-9]*).*/\1/"

但如果你想要更多比temp[number]更复杂的内容,你可以匹配 "temp" 然后一直匹配直到遇到一个空格。这样可以实现目标:

grep temp yourFileName | sed -e "s/.*(temp[^ ]*).*/\1/"

如果这个命令在命令行上执行,您可能还需要转义括号:
grep temp yourFileName | sed -e "s/.*\(temp[^ ]*\).*/\1/"

1
你可以将多行文本输入到grep中,例如:

您可以将多行文本输入到grep中,例如:

grep myword | tr ' ' '\n' | grep myword

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接