我想在匹配字符串后的每一行开头插入一个字符串
原始文件:-
header1
blue green yellow
bird cat dog
header2
reg edit last
arrow edit blue
目标文件:-
header1
header1 blue green yellow
header1 bird cat dog
header2
header2 reg edit last
header2 arrow edit blue
有人可以帮忙吗?
答案1
AWK 允许您匹配模式并保存以供日后使用。
awk 'match($1,/(header[0-9]+)/,m) { v = m[1]; print $0; next } { (NF>0 && v) ? $0 = sprintf("%s %s", v, $0) : v = "" }1' file
答案2
您可以使用该awk
命令
awk 'BEGIN{header=""} {if(length($0)==0)header=""; if(NF==1){header=$0; print header;} else print header " " $0}' srcfile > tgtfile
if(length($0)==0)header=""
将检查是否srcfile
包含空白行,如果是,则将要添加前缀的文本设置为空白字符串。if(NF==1){header=$0; print header;}
用于查找作为每行前缀的字符串并打印出来。print header " " $0
用于查找要添加字符串前缀的行。一旦找到这样的行,就将字符串添加为前缀并打印出来。
注意:srcfile
是您的输入文件,tgtfile
是输出文件。根据需要更改名称。