如何使用awk匹配以下两行

  • 本文关键字:两行 何使用 awk awk
  • 更新时间 :
  • 英文 :

- ../logs/nginx:/var/log/nginx
env_file:
- ../env/uid.env

应转换为

- ../logs/nginx:/var/log/nginx
env_file:
- ../env/nginx.env
- ../env/uid.env

文件中多次出现"env_file",这就是为什么我也需要匹配上面的行。我正在为换行而挣扎。我试过

awk '/    env_file:/{print;print "      - ../env/nginx.env";next}1' filename

这是有效的,但不包括上面的行。然后我试过了,但没用。

awk '/nginxn    env_file:/{print;print "      - ../env/nginx.env";next}1' filename

编辑:澄清我的问题。由于文件中多次出现"env_file",我无法使用第一次尝试。我需要匹配上面的一行(包含"nginx"的行(。这就是我正在努力解决的问题。

如果您想匹配一个由两行组成的块,您可以使用一个"flag"变量,该变量在块的第一行匹配时设置。

awk '
1
/nginx/{flag=1;next}
flag==1 && /    env_file:/{flag=0;print "      - ../env/nginx.env"}
flag=0
' filename

最新更新