我正在尝试创建一个简单的脚本,我需要在变量中保留一个字段。这就是我所拥有的:
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
?
答案 0 :(得分:1)
此:
print " item:<"$item">";
应该是:
print " item:<"item">";
Awk看起来很像C;在变量名之前没有$。在awk中,$表示一个字段,因此$ item尝试使用item的值作为记录的索引。在我执行awk(Mac OS)时,你的脚本写得很快;我想你的awk实现更宽松(但在这种情况下不是一种有用的方式)。