使用 awk 替换括号?

LVL*_*ron 5 awk text-processing replace

在这两种情况下,如何使用 awk 替换括号?

  1. 将空括号更改为“无”

    192.168.0.24,向上,()

  2. 删除括号,只剩下 host.domain.com

    192.168.0.25,Up,(host.domain.com)

use*_*own 2

使用 sed:

echo -e "192.168.0.25,Up,()\n1.2.3.4,Up,(host.domain.com)" | 
    sed 's/()/None/g;s/[()]//g'
192.168.0.25,Up,None
1.2.3.4,Up,host.domain.com
Run Code Online (Sandbox Code Playgroud)

这是一个 awk 程序:

BEGIN {FS=","}
$3 ~ /\(\)/   { printf ($1","$2",None\n"); next }
$3 ~ /\(.+\)/ { 
                  gsub ("\\(", "")
                  gsub ("\\)", "")
              }
              { printf ($0"\n") }
Run Code Online (Sandbox Code Playgroud)

调用它

echo -e "1.8.0.5,Up,()\n1.2.3.4,Up,(host.d.com)" | awk -f ip.awk 
Run Code Online (Sandbox Code Playgroud)

例如。

  • 或者添加 `#!/usr/bin/akw -f` shebang,使其可执行并将其命名为 `echo -e "...." | ip.awk` (2认同)