-1

匹配整条线不能满足我的要求。我想匹配下面的特定行。

Pattern pattern = Pattern.compile("(.*you\\[)(\\w+\\-\\w+\\-\\w+)(\\]\\:\\slove\\:\\s)(.*)");
Matcher matcher = pattern .matcher(line);
System.out.println(matcher.group(2));

我想知道如何使用awk或其他 Unix 命令来做到这一点。我想匹配特定的组,例如

他的电话号码是 123,他的名字是杰克。

我想在成功匹配整条线后得到123and 。jack这是上面的正则表达式

(.*\\s)(\d+\s)(.*)(\\s.*)

比我可以使用 group(2) 获得号码。但是我怎样才能使用 awk 获得它呢?

4

2 回答 2

1
 echo "his number is 123 and his name is jack" | perl -ne 'print "$1\n$2\n$3\n$4" if /(.*\s)(\d+\s)(.*?)\s([^\s]*$)/'

将给出以下输出:


his number is 
123 
and his name is
jack

这里 $2 和 $4 分别保存数字和名称。

于 2013-04-29T08:26:48.617 回答
0
awk '{print $4,$9}' FPAT='[0-9a-z]*'
于 2013-04-29T08:27:33.823 回答