Grep 命令可以获取特定文件但是不起作用

Grep 命令可以获取特定文件但是不起作用

我想要显示文件中包含空格前inventory该单词的所有行。Straw

数据文件inventory包含:

Strawberry Jam,300,4
Raspberry Jam,1216,7
Blueberry Jam,96,195
Strawberry Compote,49,621
Raspberry Compote,1937,624
Blueberry compote,200,625
Frozen Strawberries,130,1941
Straw Hats,16,2047

我努力了grep ".Straw" inventory

答案1

也许是这样的:

grep -iE '(^|[^a-z])straw ' inventory

以“straw”开头的行,以及与非字母字符匹配后跟“straw”的行(可能还需要匹配数字,...取决于您的库存文件)。


更新:如果您需要在单词 straw 之前留出空间,那么:

grep -i ' straw' inventory
grep -iE ' straw( |$)' inventory

答案2

您的命令行对我来说似乎没问题,也许“Straw”后面没有空格。

示例:我创建了一个文件,其中一行带有空格,另一行在“Straw”后面带有制表符。

$ cat inventory
00 Strawberry
12Straw space
21Straw tab
cba Straw

让我们执行你的命令:

$ grep -i 'straw ' inventory
12Straw space

现在让我们执行相同的操作,但使用字符类:

$ grep -i 'straw[[:space:]]' inventory
12Straw space
21Straw tab

答案3

将 cat 连接到 grep?cat inventory | grep "^straw\ "

sed也可以通过和来实现printf

答案4

我也遇到了同样的问题,所以我决定与其他人分享。他们都是正确的。

  1. egrep "Straw[[:space:]]" inventory
  2. grep "Straw[ ]" inventory
  3. grep "Straw " inventory

但只有最后一个适用于该 Linux 作业。

相关内容