grep - 处理引号内的文本

Dou*_*son 2 linux grep

我有一行文字,我正在使用grep来查看这封信是否d存在.这是一个正在发生的事情的例子:

返回1,这是正确的:

echo d file='hello world' | grep -c -w d
Run Code Online (Sandbox Code Playgroud)

返回0,这是正确的:

echo file='hello world' | grep -c -w d
Run Code Online (Sandbox Code Playgroud)

返回1,这是正确的:

echo d file='hello world d' | grep -c -w d
Run Code Online (Sandbox Code Playgroud)

返回1 - 应该返回0:

echo file='hello world d' | grep -c -w d
Run Code Online (Sandbox Code Playgroud)

我需要它来忽略单引号内的数据.是grep在这里使用的正确工具还是有其他可能有用的工具?

Bar*_*lly 5

sed用来删除引号内的所有文本,然后grep对输出执行sed.像这样的东西:

echo "d 'hi there'" | sed -r "s|'[^']*'||g" | grep -c -w d
Run Code Online (Sandbox Code Playgroud)