在多行之后插入文本

  • 本文关键字:插入文本 之后 unix
  • 更新时间 :
  • 英文 :


我有一个文件,每36125行包含一个单词MODEL。我想在每次出现"模型"单词之前添加以下几行

REMARK    GENERATED BY TRJCONV
TITLE     DRG t= 980.00000
REMARK    THIS IS A SIMULATION BOX
CRYST1   71.471   71.471   71.471  90.00  90.00  90.00 P 1           1

吉姆回答后,我做了以下

add='REMARK    GENERATED BY TRJCONV
TITLE     DRG t= 980.00000
REMARK    THIS IS A SIMULATION BOX
CRYST1   71.471   71.471   71.471  90.00  90.00  90.00 P 1           1
'
awk -v n=8 -v s="$add" 'NR == n {print s} {print}' file > newfile

但这给了我以下错误

awk: newline in string REMARK    GENERATED ... at source line 1

try:

add="REMARK    GENERATED BY TRJCONV
TITLE     DRG t= 980.00000
REMARK    THIS IS A SIMULATION BOX
CRYST1   71.471   71.471   71.471  90.00  90.00  90.00 P 1           1
"
awk -v var="$add" 'NR>1 && NR%36125==0 {print add} {print $0}' oldfile > newfile

这是在香草awk上运行的-刚刚测试过:

rem1="REMARK    GENERATED BY TRJCONV"
rem2="TITLE     DRG t= 980.00000"
rem3="REMARK    THIS IS A SIMULATION BOX"
rem4="CRYST1   71.471   71.471   71.471  90.00  90.00  90.00 P 1           1"
nawk -v var1="$rem1" 
     -v var2="$rem2" 
     -v var3="$rem3" 
     -v var4="$rem4" 
    'NR>1 && NR%36125==0 {print var1; print var2; print var3; print var4} 
      {print $0}' oldfile > newfile

这是我最初使用awk的一个奇怪变体的问题——对不起。

最新更新