awk系统没有正确设置变量

时间:2011-06-13 03:36:44

标签: awk system

我遇到的问题是将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

2 个答案:

答案 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