【发布时间】:2017-07-14 00:25:39
【问题描述】:
Awk 程序将处理许多数据文件。在每个数据文件中,它应该寻找模式并插入两行/记录新字段。 (这只是一个例子,最终的程序要在这个动作旁边做更多的事情)。
数据文件为例
Rec not needed-1
Rec not needed-2
Rec not needed-n
start
Record-1
Record-2
Record-n
它是制表符分隔的,这里我们只有 1 美元。
源程序
BEGIN { OFS=FS="\t"}
FNR==1 {flag=0;} p;
#flag && $1!=""{$1=$1; print}
$1=="Record-2" && flag{$1="";$2="newline1"; print; $1=""; $2="newline2"; print}
#$1=="Record-2" {flag=1} p {$1=""; $2="newline1"; print; $1=""; $2="newline2"; print; flag=0} 1
flag!=0{print};
/start/{flag=1}
因为我使用的是 Windows,所以这是通过 GAWK 调用的。
想要的输出:
Record-1
newline1
newline2
Record-n
我的输出与“newline2”的重复问题
Record-1
newline1
newline2
newline2
Record-n
我认为问题与“标志”的使用有关。但是为了在工作中执行我的 awk 程序的所有其他操作,
FNR==1 {flag=0;} p;
...
flag!=0{print};
/start/{flag=1}
应该保持不变 - 只要它不会“伤害”。谢谢。
【问题讨论】:
-
您能否在此处添加更清晰的示例 Input_file 和预期的输出文件?