这是我的配置文件(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名单.
用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".