需要验证我对sed如何编辑此文件的理解

时间:2017-05-01 17:05:40

标签: bash sed

这是由sed编辑的文件:

# cat flyway.conf.j2
flyway.url=jdbc:postgresql://{{ DB_HOST }}:5432/{{ DB_NAME }}?currentSchema=fm_fmp
flyway.user={{ FLYWAY_USER }}
flyway.password={{ FLYWAY_PASSWORD }}

这是代码片段,注释是我对代码的理解,是我理解正确的,也是## * /获取目录的基本名称:

# To get the last dir in current working directory, and if you want to do it completely within a bash script without running any external binaries
SCHEMA=${PWD##*/}    
#sed -i means inplace, alnum means alphanumeric, 1s (Only search and replace 1st line) searching for string =any_alpha_numeric then _ then {}, 
    # then *$ meaning to the end and replace with value of variable $SCHEMA 
    sed -i "1s/=[[:alnum:]_{} ]*$/=${SCHEMA}/" flyway.conf.j2

1 个答案:

答案 0 :(得分:0)

${PWD##*/}是bash变量扩展的一部分。一般来说

  

$ {var ## Pattern}从$ var中删除与$ var的前端匹配的$ Pattern的最长部分。

因此它会产生当前工作目录,减去它的第一部分,以/结尾 [[:alnum:]_{} ]*是“任意数量的字母数字,空格,下划线或花括号”的正则表达式 $要求正则表达式在该行结束,并且必须以=开头。