编写正则表达式来解析后面的字符串

时间:2015-04-25 05:59:52

标签: regex sed

我正在使用sed命令,我想解析以下字符串:

Mr. XYZ                              Mr. ABC, PQR
Ward-2, abc                   vs.    MG Road, Pune,
                                     Pune Dist.,

(Appellant)                          (Respondent)

现在我想解析上面的字符串,我希望将Appellant部分从上面的例子中分离出来并将响应部分分开。

这就是我想要的输出:

Mr. XYZ Ward-2, abc(Appellant)是一个输出,Mr. ABC, PQR MG Road, Pune, Pune Dist.,(Respondent)是使用sed命令的另一个输出。

我使用了以下正则表达式但未获得正确的输出:

sed -n '/assessment year/I{ :loop; n; /Respondent/Iq; p; b loop}' abc.txt

2 个答案:

答案 0 :(得分:0)

对于涉及查看多行的任何作业来说,sed始终是错误的工具。只需使用awk,它就是它的发明。这里有几个扩展的GNU awk:

$ cat tst.awk
BEGIN { FIELDWIDTHS="30 7 99" }
{
    for (i=1;i<=NF;i++) {
        gsub(/^\s*|\s*$/,"",$i)
        if ($i != "") {
            rec[i] = (rec[i]=="" ? "" : rec[i] " ") $i
        }
    }
}
/^\(/ {
    print rec[1]
    print rec[3]
    delete rec
}
$
$ awk -f tst.awk file
Mr. XYZ Ward-2, abc (Appellant)
Mr. ABC, PQR MG Road, Pune, Pune Dist., (Respondent)

答案 1 :(得分:-1)

我通过使用ruby以下列方式实现了这一点:

dict = {
    'a': 1,
}

def dict_find(key):
    return dict.get(key)

print dict_find('a')
print dict.get('a')