我想要显示文件中包含空格前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
我也遇到了同样的问题,所以我决定与其他人分享。他们都是正确的。
egrep "Straw[[:space:]]" inventory
grep "Straw[ ]" inventory
grep "Straw " inventory
但只有最后一个适用于该 Linux 作业。