Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex awk-alpha正则表达式的改进_Regex_Awk - Fatal编程技术网

Regex awk-alpha正则表达式的改进

Regex awk-alpha正则表达式的改进,regex,awk,Regex,Awk,我有一个文本文件,有字母线。一些alpha行以“叙述”开头,需要以不同于所有其他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">

我有一个文本文件,有字母线。一些alpha行以“叙述”开头,需要以不同于所有其他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
}
我想定义叙述式正则表达式并改进标题正则表达式。谢谢你的帮助

输入是一系列具有可选项和必填项的数据集。有些项目可以重复。每套设备将按以下顺序配备以下项目: 1强制性项目说明 2由可选的 3链接描述每套一个或多个链接。强制性的

有关数据集的其他信息 a集合中的所有项目都用新行分隔 b集合的最后一项将']'作为最后一个字符,即] c原始文件有其他在此未提及的数据问题,例如。 此数据集的RS和FS应该是什么

预期的输出是一个json数组,它是通过解析输入文件并根据数据中嵌入的其他特征组合元素而生成的。所有相关元素都是按顺序发生的,因此使用awk逐行处理“已处理数据文件-非原始数据文件”可以解决此问题。awk的原始文件处理可能也可以,但我没有尝试过,因为它包含无论如何都需要丢弃的数据元素,并且所需的数据元素被其他文本元素包围。

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

/^Narrated/ {do some thing}

“做一些事情”只有在行以“叙述”开头时才会运行 我不明白为什么要在这里使用正则表达式

标题行可以是:

/^This is/ {do some thing}

请发布代码的预期输出。

谢谢Jotne。这是。。。这是一个例子。它可以是任何其他阿尔法字符串,但它永远不会以“叙述”开头。所以有以“叙述”开头的行,也有以任何其他字母字符串开头的行。我更新了示例数据文件。@Lafani对我来说,你有两种类型的叙述行,像这样/^annotated/而不是在行尾的/book$/book中得到的书行。@Lafani如果你只有两种类型的数据,那么对叙述行和/^叙述/为所有其他人叙述。同时也发布它的预期输出。我提供了更多关于输入和输出的信息
/^This is/ {do some thing}