在bash中解析配置文件

Dav*_*edy 4 bash awk grep sed

这是我的配置文件(dansguardian-config):

banned-phrase duck

banned-site allaboutbirds.org
Run Code Online (Sandbox Code Playgroud)

我想写一个bash脚本,它将读取此配置文件并为我创建一些其他文件.这是我到目前为止所做的,它主要是伪代码:

while read line
do
    # if line starts with "banned-phrase"
        # add rest of line to file bannedphraselist
    # fi

    # if line starts with "banned-site"
        # add rest of line to file bannedsitelist
    # fi
done < dansguardian-config
Run Code Online (Sandbox Code Playgroud)

我不确定我是否需要使用grep,sed,awk或者什么.

希望有道理.我真的很讨厌DansGuardian名单.

Chr*_*our 5

awk:

$ cat config
banned-phrase duck frog bird
banned-phrase horse
banned-site allaboutbirds.org duckduckgoose.net
banned-site froggingbirds.gov

$ awk '$1=="banned-phrase"{for(i=2;i<=NF;i++)print $i >"bannedphraselist"}
       $1=="banned-site"{for(i=2;i<=NF;i++)print $i >"bannedsitelist"}' config

$ cat bannedphraselist 
duck
frog
bird
horse

$ cat bannedsitelist 
allaboutbirds.org
duckduckgoose.net
froggingbirds.gov
Run Code Online (Sandbox Code Playgroud)

说明:

awk默认情况下,每一行由空格分隔成字段,并且每个字段由处理$i,其中i是第i 在每一行的第一个字段是$1,在每一行的第二场是$2高达$NF其中NF是包含字段的数量可变在给定的行上.

所以脚本很简单:

  • 根据我们所需的字符串检查第一个字段 $1=="banned-phrase"

  • 如果匹配的第一个字段然后遍历所有其他字段for(i=2;i<=NF;i++)并打印每个字段print $i并将输出重定向到文件>"bannedphraselist".