我在使用sed时遇到了一些麻烦。提取模式的正确方法是什么?
例如,以下内容返回world
,我希望它只返回w
echo "hello world" | sed -n 's|hello \(w\)|\1|p'
答案 0 :(得分:3)
你可以用这种方式更好。
回声“你好世界”| sed -r's /.+(w)。* / \ 1 /'
这将只提取w字符。
-r选项是扩展正则表达式。所以我们不使用转义“\”特殊字符。
。匹配任何单个字符。 *星号将匹配零次或多次。
+ plus将匹配一个或多个匹配项。
()这是使用此分组方法,您可以获取返回引用。
s用于替代方法。
答案 1 :(得分:2)
你忘记了匹配&在w
之后替换(删除)文本:
echo "hello world" | sed -n 's|hello \(w\).*|\1|p'
答案 2 :(得分:1)
sed命令如果匹配任何字符串,如果只匹配第一个字符中的第二个字
sed's /([a-z]。*)([a-z])。* / \ 2 /'inputfile