Regex grep模式不在子字符串的开头或结尾

Regex grep模式不在子字符串的开头或结尾,regex,awk,sed,grep,Regex,Awk,Sed,Grep,如何仅grep不在子字符串开头或结尾的字符串 在此,我将子字符串定义为字符,用逗号分隔,。因此,我想要一个介于布鲁布和迪多普之间的,以及一个介于乔和哈之间的 下面的代码将全部变灰: echo“测试,blubdidup,joha”| grep“ 如何仅grep不在子字符串开头或结尾的字符串 使用gnu grep,您可以使用环视来匹配任何不在开始或结束处的双引号: grep -oP '(?<!^)"(?!$)' <<< 'test,"blub"d

如何仅grep不在子字符串开头或结尾的字符串

在此,我将子字符串定义为字符,用逗号分隔,。因此,我想要一个介于布鲁布和迪多普之间的,以及一个介于乔和哈之间的

下面的代码将全部变灰:

echo“测试,blubdidup,joha”| grep“ 如何仅grep不在子字符串开头或结尾的字符串

使用gnu grep,您可以使用环视来匹配任何不在开始或结束处的双引号:

grep -oP '(?<!^)"(?!$)' <<< 'test,"blub"didup","jo"ha"'
或使用任何awk:

awk -F '[^"]*' '{for (i=2; i<NF; ++i) print $i}' <<< 'test,"blub"didup","jo"ha"'
如何仅grep不在子字符串开头或结尾的字符串

使用gnu grep,您可以使用环视来匹配任何不在开始或结束处的双引号:

grep -oP '(?<!^)"(?!$)' <<< 'test,"blub"didup","jo"ha"'
或使用任何awk:

awk -F '[^"]*' '{for (i=2; i<NF; ++i) print $i}' <<< 'test,"blub"didup","jo"ha"'
你可以用

grep '[^,]"[^,]'
相配

[^,]-除逗号以外的任何字符 -双引号 [^,]-除逗号以外的任何字符。 见:

echo’test,blubdidup,joha’| grep’[^,][^,]' =>测试,blubdidup,joha 可以使用sed替换此类报价:

echo“测试,blubdidup,joha”| sed:a;s/\[^,]\\[^,]\/\1\2/;ta' =>测试,blub-didup,jo-ha 请参阅。

您可以使用

grep '[^,]"[^,]'
相配

[^,]-除逗号以外的任何字符 -双引号 [^,]-除逗号以外的任何字符。 见:

echo’test,blubdidup,joha’| grep’[^,][^,]' =>测试,blubdidup,joha 可以使用sed替换此类报价:

echo“测试,blubdidup,joha”| sed:a;s/\[^,]\\[^,]\/\1\2/;ta' =>测试,blub-didup,jo-ha
请参阅。

可能是grep'[^,][^,]'?或者grep-E'^ |[^,]$|[^,]'?@WiktorStribiżew第二个grep也会获取字符串末尾的。BSD第一个grep命令在BSD和GNU上工作。我想这应该作为答案@WiktorStribiżew发布。也许是grep'[^,][^,]'?或者grep-E'^ |[^,]$|[^,]'?@WiktorStribiżew第二个grep也会获取字符串末尾的。BSD第一个grep命令在BSD和GNU上工作。我想这应该作为答案@WiktorStribiżew发布。