Ame*_*mey 3 sed regular-expression
我是新手,sed
并且在使它工作时遇到了一些麻烦。
我想要的是这个:
abc.ztx.com. A 132.123.12.44 ---> abc.ztx.com
Run Code Online (Sandbox Code Playgroud)
我使用了以下模式,但似乎不起作用:
echo "abc.ztx.com. A 132.123.12.44" | sed 's/\.\s.+//g'
Run Code Online (Sandbox Code Playgroud)
我使用 regex101.com 和模式验证了正则表达式,完美\.\s.+
匹配部分. A 132.123.12.44
。为什么它不能与sed
.
感谢你的帮助。谢谢你。
sed
默认情况下使用 POSIX 基本正则表达式 (BRE)。 \s
是一个 PCRE(与 Perl 兼容的正则表达式),它相当于 BRE [[:blank:]]
(我认为,匹配空格和制表符,或者[[:space:]]
匹配更大的空白字符集)。的+
是一POSIX扩展正则表达式(ERE)改性剂,这相当于\{1,\}
作为BRE。
所以试试
sed 's/\.[[:blank:]].*//'
Run Code Online (Sandbox Code Playgroud)
反而。[[:blank:]]
如果不需要匹配制表符,可以用空格字符替换:
sed 's/\. .*//'
Run Code Online (Sandbox Code Playgroud)
请注意,无需使用g
标志进行替换,因为只会有一个匹配项。此外,.+
您使用的 可以替换为.*
而不是.\{1,\}
因为我们根本不关心是否还有其他字符(只需删除所有字符)。
有关的: