1

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

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

4

1 回答 1

1

这:

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

应该:

print "  item:<"item">";

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

于 2013-04-27T09:48:11.297 回答