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

Unix substitute multiple strings using a reference file

我有一个参考文件,我想用它来替换目录中的多个文件。为此,我正在使用 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[]=;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

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[]=;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