awk alpha正则表达式改进

时间:2014-08-26 05:33:35

标签: regex awk

我有一个包含alpha行的文本文件。一些alpha线以'Narrated'开头。并且需要与所有其他alpha行不同地进行处理。以下是测试数据:

This is my article
<img src="">
<a href="">
New magazine
Narrated by abc
<a href="">
Is this a new paper?
<img src="">
<a href="link1">
<a href="link2">
That is an old journal
<img src="">
<a href="">
A fine book!
<img src="">
<a href="">
Yes, this is some book.
Narrated by xyz
<img src="">
<a href="">

我当前的脚本如下所示:

BEGIN  {
    title  = "^[A-Z].*"
    narrated  = "to be defined"
    image = "^<img.*"
    links = "^<a.*"
}

$0 ~ title {
    pos = index($0, "Narrated"); # check if the line contains narrated
    if (pos == 0) {
            print $0; #print other line
    } else {
            print $0; #print narrated line
    }
}
$0 ~ img {
    # do processing
}
$0 ~ link {
    # do processing
}

我想定义&#34; 叙述&#34;正则表达并改进&#34; 标题&#34;正则表达式。谢谢你的帮助!

输入是一系列具有可选项和必需项的数据集。有些项目可以重复。每组将按以下顺序排列以下项目: 1)项目描述(必填) 2)叙述(可选) 3)链接描述(每组一个或多个链接。强制性)

有关数据集的其他信息 a)该组的所有项目都用新行分隔 b)该组的最后一项有&#39;]&#39;作为最后一个字符,即] c)原始文件有其他数据问题,这里没有提到(例如

此数据集的RS和FS应该是什么?

预期输出是一个json数组,它是通过解析输入文件并根据嵌入数据中的其他特征组合元素而生成的。所有相关元素按顺序出现,因此逐行处理处理过的数据文件 - 而不是原始数据文件&#39;用awk作为解决这个问题的方法。 awk的原始文件处理可能也会起作用,但我没有给它一个镜头,因为它包含需要丢弃的数据元素,并且所需的数据元素被其他文本元素包围。

1 个答案:

答案 0 :(得分:2)

要处理narrated行,只需执行以下操作:

/^Narrated/ {do some thing}

$1=="Narrated" {do some thing}
只有当行以do some thing开头时才会运行

Narrated 我不明白你为什么要在这里使用正则表达式。

标题行可以是:

/^This is/ {do some thing}

请求预期的代码输出。