代码之家  ›  专栏  ›  技术社区  ›  Saurav Rout

Unix使用参考文件[duplicate]替换多个字符串

  •  1
  • Saurav Rout  · 技术社区  · 3 年前

    我有一个参考文件,我想用它替换目录中的多个文件。我使用AWK GSUB来实现这一点,但它并不是替换确切的单词,而是替换所有出现的单词。我怎样才能阻止这种行为?我怎样才能只替换这个词呢?在这种情况下,单词是“IT”

    我的参考文件

    $ cat dev_to_prod.config
    
    nonprod_DATA_PATH PROD_DATA_PATH
    nonprod_ENCRYPTKEY PROD_ENCRYPTKEY
    IT Business
    

    我当前的数据文件

    $ cat filefile.txt
    IT
    WITH
    /IT/DFGh/erfe
    /WITH/IT/sjfgh/hjIT/dfdsf/ITvjkl
    

    输出当前代码

    awk 'FNR==NR{A[$1]=$2;next}{for(i in A)gsub(i,A[i])}1' dev_to_prod.config file.txt
    Business
    WBusinessH
    /Business/DFGh/erfe
    /WBusinessH/Business/sjfgh/hjBusiness/dfdsf/Businessvjkl
    
    1 回复  |  直到 3 年前
        1
  •  1
  •   tshiono    3 年前

    man awk 说:

    \<     matches the empty string at the beginning of a word.
    \>     matches the empty string at the end of a word.
    

    那么请你试试:

    awk 'FNR==NR{A[$1]=$2;next}{for(i in A)gsub("\\<"i"\\>",A[i])}1' dev_to_prod.config file.txt
    

    输出:

    Business
    WITH
    /Business/DFGh/erfe
    /WITH/Business/sjfgh/hjIT/dfdsf/ITvjkl