Regex Unix命令仅grep以“开始”开头的子字符串;xyz……”;到第一个空间?
我有一段文字: 这是我的=测试和类=76 这是我的=测试和类=78 这是my=test2和class=76 这是my=test3和class=75 这是my=test1和class=79 我想在不打印整行的情况下,将所有以“class=”开头的单词与值进行grep。输出应为:Regex Unix命令仅grep以“开始”开头的子字符串;xyz……”;到第一个空间?,regex,unix,grep,Regex,Unix,Grep,我有一段文字: 这是我的=测试和类=76 这是我的=测试和类=78 这是my=test2和class=76 这是my=test3和class=75 这是my=test1和class=79 我想在不打印整行的情况下,将所有以“class=”开头的单词与值进行grep。输出应为: class=76 class=78 class=76 class=75 class=79 有什么命令可以帮我吗 我试过这个: grep -E '(^|\s+)class=(?=\s|$)' file 但是没有得到任何输
class=76
class=78
class=76
class=75
class=79
有什么命令可以帮我吗
我试过这个:
grep -E '(^|\s+)class=(?=\s|$)' file
但是没有得到任何输出。您的(^ |\s+)类=(?=\s |$)
模式不符合POSIX,因为它包含一个正向的前瞻(?=\s |$)
,用于匹配后跟空白或字符串结尾位置的位置。由于您希望匹配类=
后面的数字,因此即使在PCRE正则表达式中,这种前瞻也没有意义。(^ |\s+
组旨在匹配字符串的开头或1个或多个空格,但这里似乎只需要单词边界即可
你可以用
grep -oE '\<class=[^ ]+' file
使用grep(GNU grep)2.27测试。您的(^ |\s+)类=(?=\s |$)
模式不符合POSIX,因为它包含一个积极的前瞻(?=\s |$)
,用于匹配后跟空白或字符串结尾位置的位置。由于您希望匹配类=
后面的数字,因此即使在PCRE正则表达式中,这种前瞻也没有意义。(^ |\s+
组旨在匹配字符串的开头或1个或多个空格,但这里似乎只需要单词边界即可
你可以用
grep -oE '\<class=[^ ]+' file
使用grep(GNU grep)2.27进行测试。使用Perl oneliner
> data="This is my=test and class=76 This is my=test and class=78 This is my=test2 and \n class=76 This is my=test3 and class=75 This is my=test1 and class=79."
> perl -0777 -ne ' { while(/(class=(\d+))/g) { print "$1\n" } } ' <<< "$data"
class=76
class=78
class=76
class=75
class=79
>
使用Perl oneliner
> data="This is my=test and class=76 This is my=test and class=78 This is my=test2 and \n class=76 This is my=test3 and class=75 This is my=test1 and class=79."
> perl -0777 -ne ' { while(/(class=(\d+))/g) { print "$1\n" } } ' <<< "$data"
class=76
class=78
class=76
class=75
class=79
>
可能重复的可能重复的可能重复的可能重复的可能重复的非常感谢,现在,让我们假设我想在“class=”之后但在第一个空格出现之前获取字符串。那么修改后的命令是什么?
grep-oE'\n非常感谢您的工作,现在,让我们假设我想在“class=”之后但在第一个空格出现之前获取字符串。那么修改后的命令是什么?grep-oE'\