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