我有一个 UNIX 脚本,里面有 nawk 块(这只是 UNIX 和 NAWK 脚本的一部分。它有更多的逻辑,下面的代码肯定应该在 nawk 中)这个块读取国家 ISO 代码的查找值从具有国家和国家代码值的文件中,只要国家名称 () 中有括号或单个撇号',我就会遇到问题
这些只是示例值,它可以有许多带有单引号和括号的国家/地区
Sample values
CIV@COTE D'IVOIRE
COD@CONGO, Democratic Republic of (was Zaire)
HRV@CROATIA (local name: Hrvatska)
你能帮我克服这两个问题,即字符串是否有单引号或括号。
无论如何我可以动态地转义这个单引号和撇号吗?
代码
processbody() {
nawk '{
// These are sample values not exhaustive
COUNTRY_NAME = "COTE D'IVOIRE" // this is read dynamically inside nawk
#COUNTRY_NAME = "CONGO, Democratic Republic of (was Zaire)" // this is read dynamically inside nawk
#COUNTRY_NAME = "CROATIA (local name: Hrvatska)" // this is read dynamically inside nawk
if (COUNTRY_NAME != " "){
file = "/tmp/country_codes.txt"
FS = "@"
while( getline < file ) {
if( $0 ~ COUNTRY_NAME ) {
COUNTRY_CODE = $1
}
}
close( file )
}
printf("%s\n",COUNTRY_CODE) > "/tmp/code.txt"
}' /tmp/file.txt
}
processbody