使用awk和zsh配置来自〜/ .netrc文件的程序读取数据

时间:2015-09-14 19:55:41

标签: awk zsh

让我说~/.netrc这样的条目很少:

machine    *******************
login      *******
password   **********

machine    *********************
login      *****************
password   **********

使用此脚本我可以通过填充第一个机器块来配置git ftp 从上面:

print "$(awk '/machine/ { skip = !skip; }; skip { print $1" "$2 }' ~/.netrc)" | while read k v
do
    case $k in
        machine )
            print git.config ftp.url $v
            ;;
        login )
            print git.config ftp.user $v
            ;;
        password )
            print git.config ftp.password $v
    esac
done

但是,出于灵活性的原因,我希望能够为此脚本提供一个机器参数 name,以便只从上面使用该块;

如何在阅读awk时指示~/.netrc使用该参数并停止使用该参数 下一个机器实例?

编辑:现在我意识到我在代码中还有一个缺陷,而且 那就是:由于跳过开关,每个第二个机器块都会被读取,而我 想要使用一个且只有一个,其中机器名称与用户提供的匹配 参数。

1 个答案:

答案 0 :(得分:0)

如果机器名称在掩码字段2中,则可以执行此操作

awk -v RS= -v name="****etc" '$1=="machine" && $2==name {...`

或在awk脚本中对该名称进行硬编码。通过将awk设置为段落模式,您可以将行分组为一个由空行分隔的逻辑记录。