将行字段保存到变量中

时间:2013-04-27 09:02:52

标签: awk

我正在尝试创建一个简单的脚本,我需要在变量中保留一个字段。这就是我所拥有的:

BEGIN{
  FS=":";
}

{
    print;
    item=$1;
    print "    "$1;
    print "    "$2;
    print "  item:<"$item">";
}

我不明白的是,当我向脚本传递一行时,这是输出:

main.o: src/main.cpp src/CMenu.h src/CUtils.h src/CAbsPlayer.h \ //given line
    main.o                                                       //field 1   
     src/main.cpp src/CMenu.h src/CUtils.h src/CAbsPlayer.h \    //field 2
  item:<main.o: src/main.cpp src/CMenu.h src/CUtils.h src/CAbsPlayer.h \> //field1?!

为什么这不起作用,为什么整行保存到item

1 个答案:

答案 0 :(得分:1)

此:

print "  item:<"$item">";

应该是:

print "  item:<"item">";

Awk看起来很像C;在变量名之前没有$。在awk中,$表示一个字段,因此$ item尝试使用item的值作为记录的索引。在我执行awk(Mac OS)时,你的脚本写得很快;我想你的awk实现更宽松(但在这种情况下不是一种有用的方式)。