我遇到的问题是将grep的输出(在nawk中的system()中使用)分配给变量。
nawk '{
CITIZEN_COUNTRY_NAME = "INDIA"
CITIZENSHIP_CODE=system("grep "CITIZEN_COUNTRY_NAME " /tmp/OFAC/country_codes.config | cut -d @ -f1")
}'/tmp/*****
值IND显示在控制台中,但是当我给出printf时,citizenshipcode的值为0 - 你能不能帮助我
printf(“国家标签|%s |%s \ n”,CITIZEN_COUNTRY_NAME,CITIZENSHIP_CODE)
country_codes.config文件的内容
IND@INDIA
IND@INDIB
CAN@CANADA
答案 0 :(得分:1)
系统返回被调用命令的退出值,但该命令的输出不会返回给awk(或nawk)。要获得输出,您需要直接使用getline。例如,您可以重写脚本:
awk ' { file = "/tmp/OFAC/country_codes.config"; CITIZEN_COUNTRY_NAME = "INDIA"; FS = "@"; while( getline < file ) { if( $0 ~ CITIZEN_COUNTRY_NAME ) { CITIZENSHIP_CODE = $1; } } close( file ); }'
答案 1 :(得分:0)
使用awk预加载配置文件:
nawk '
NR == FNR {
split($0, x, "@")
country_code[x[2]] = x[1]
next
}
{
CITIZEN_COUNTRY_NAME = "INDIA"
if (CITIZEN_COUNTRY_NAME in country_code) {
value = country_code[CITIZEN_COUNTRY_NAME]
} else {
value = "null"
}
print "found " value " for country name " CITIZEN_COUNTRY_NAME
}
' country_codes.config filename