2

这是我的文件。

    this is temp1
    this is temp2
    this is temp3

如何使用 grep 命令在查找模式“temp”时,结果应仅显示为“temp1,temp2,temp3”,而不是整个句子。

谢谢

4

3 回答 3

11

你可以使用 -o 选项

$ grep -o "temp[0-9]"
于 2013-07-10T07:29:47.473 回答
2

您可能希望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/"
于 2013-07-10T07:46:28.063 回答
1

您可以将行分成多行,然后将其输入 grep 例如

grep myword | tr ' ' '\n' | grep myword
于 2018-10-11T15:44:38.543 回答