我有一行文本,我正在使用grep来查看字母d
存在。 这是一个发生了什么事情的例子:
返回1,这是正确的:
echo d file='hello world' | grep -c -wd
返回0,这是正确的:
echo file='hello world' | grep -c -wd
返回1,这是正确的:
echo d file='hello world d' | grep -c -wd
返回1 – 应该返回0:
echo file='hello world d' | grep -c -wd
我需要它忽略单引号内的数据。 grep
是在这里使用的正确的工具还是有其他的东西可以帮助?
我会使用sed
删除引号内的所有文本,然后对sed
的输出做一个grep
。 像这样的东西:
echo "d 'hi there'" | sed -r "s|'[^']*'||g" | grep -c -wd
通过一个工具管输出来摆脱你不想要的东西,例如sed
:
echo d file='hello world' | sed -e "s:'[^']*'::g" | grep -c -wd
这读取:用空字符串替换任何匹配正则表达式(用:
分隔)的任何东西。
根据您提供的信息,这应该工作:
grep -c -E“^ [^'] *?d。*?'。*?'”
%>猫blah.sh echo d file = \'hello world \'| grep -c -E“^ [^'] *?d。*?'。*?'” echo file = \'hello world \'| grep -c -E“^ [^'] *?d。*?'。*?'” echo d file = \'hello world d \'| grep -c -E“^ [^'] *?d。*?'。*?'” echo file = \'hello world d \'| grep -c -E“^ [^'] *?d。*?'。*?'” %> ./blah.sh 1 0 1 0