在某些标题字符串之后的文本文件每行的开头插入字符串

在某些标题字符串之后的文本文件每行的开头插入字符串

我想在匹配字符串后的每一行开头插入一个字符串

原始文件:-

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是输出文件。根据需要更改名称。

相关内容