Awk 当第一行与sed匹配时,在文件的顶部插入一行,在底部插入另一行

Awk 当第一行与sed匹配时,在文件的顶部插入一行,在底部插入另一行,awk,sed,Awk,Sed,当第一行与sed匹配时,我想在文件的顶部插入一行,在底部插入另一行。我试过下面这句话,但没有成功,也没有改变。它插入第一行,但不插入最后一行: file.txt REMARK Blah Blah blah Sed: 谢谢 马里奥你能试试下面的awk吗?如果这对你有帮助,请告诉我。下面将在第一行匹配后插入一个字符串MODEL,该行中包含字符串备注。在最后一行读取后还插入字符串ENDMODEL awk 'FNR==1 && $0=="REMARKS"{print $0 ORS "M

当第一行与sed匹配时,我想在文件的顶部插入一行,在底部插入另一行。我试过下面这句话,但没有成功,也没有改变。它插入第一行,但不插入最后一行:

file.txt

REMARK
Blah
Blah
blah
Sed:

谢谢
马里奥

你能试试下面的
awk
吗?如果这对你有帮助,请告诉我。下面将在第一行匹配后插入一个字符串
MODEL
,该行中包含字符串
备注
。在最后一行读取后还插入字符串
ENDMODEL

awk 'FNR==1 && $0=="REMARKS"{print $0 ORS "MODEL";next} 1; END{print "ENDMODEL"}'  Input_file
如果您需要更改输入文件本身,请将
>temp\u文件和&mv temp\u文件Input\u文件
附加到上述命令

编辑:OP说只有在找到第一行匹配时才应添加最后一行,那么下面的内容可能会有所帮助

awk 'FNR==1 && $0=="REMARK"{flag=1;print "MODEL" ORS $0;next} 1; END{if(flag){print "ENDMODEL"}}'  Input_file

有了sed,你似乎得到了gnu-sed

sed -i -e '1{/REMARK/{i MODEL' -e ':A;$a ENDMODEL' -e 'n;bA}}' file.txt

不,这没用。我希望仅在第一行与“备注”匹配时插入和添加。Thanks@MarioABianchet,好的,我已经写了
备注
,我把它改成了
备注
,请检查一下,然后让我知道?附加最后一行,但不是第一行。它是否独立于第一行有或没有字符串。@MarioABianchet,是的,它应该只像那样工作,你能检查一次,然后让我知道相同的吗?只在末尾添加,与匹配无关。但是,我要求仅当原始文件以REMARKHi ctac_开头时,才在顶部插入,在底部追加,第二次在文件末尾添加,并且只有在第一行与备注匹配时才必须这样做。我不明白它到底出了什么问题。你是对的,用-I选项第二次等ENDMODEL是add,我更新了答案。
sed -i -e '1{/REMARK/{i MODEL' -e ':A;$a ENDMODEL' -e 'n;bA}}' file.txt