如何在 awk END 语句中写入对文件的更改

How to write changes to file in awk END statement

我在使用 awk 功能的地方用这个“bash”脚本替换了一些字符串。 我可以以某种方式将更改保存到 END 语句中的文件吗?或者这不是 awk 是如何完成的。或者您会推荐结合使用 grep 和 sed 吗?

 #!/usr/bin/bash
 
 
 FILENAME=
 SUBSTRING=
 
 
 echo $FILENAME 
 
 cat $FILENAME | awk '
 BEGIN {
         IGNORECASE=1
         foundinput=0
 };
 
 
 {
 if (foundinput={
         if ([=10=] ~ /INPUT/){
                 start=match([=10=], /\/.*$/)
                 SUBTHIS=substr([=10=], start)
                 sub(SUBTHIS, "'$SUBSTRING'")
                 print([=10=])
         }   
 }
 }
 
 {gsub(" ", "", [=10=])}
 b=/BRAKEDISC/
 
 {
 if (b={
         foundinput=1
 };
 }
 
 END {
         print [=10=] > "input.bak"
 }
 '

如有任何建议,我将不胜感激。

干杯, 克里斯托弗

看起来您不需要 END 块。您只需要将输出重定向到 input.bak 等:

awk '{...}' filename > input.bak