1

我在使用 sed 时遇到了一些问题。什么是仅提取模式的正确方法?
例如以下返回world,我希望它只返回w

echo "hello world" | sed -n 's|hello \(w\)|\1|p'

4

3 回答 3

3

更好的是你可以使用这种方式。

回声“你好世界” | sed -r 's/.+(w).*/\1/'

这将只提取 w 字符。-r 选项是扩展的正则表达式。所以我们不使用转义“\”特殊字符。
. 匹配任何单个字符。* 星号将匹配零次或多次出现。+ plus 将匹配一个或多个匹配项。() 这是使用它的分组方法,您可以取回参考。s 用于替代方法。

于 2012-09-29T11:59:18.757 回答
2

您忘记匹配并替换(删除)以下文本w

echo "hello world" | sed -n 's|hello \(w\).*|\1|p'
于 2012-09-29T11:15:38.780 回答
1

sed 命令如果匹配任何字符串如果只匹配第一个字符中的第二个单词

sed 's/([az].*) ([az]).*/\2/' 输入文件

于 2012-09-29T12:50:41.680 回答