将一行字段保存到一个变量中
问题描述:
我想制作一个简单的脚本,我需要在变量中保留一个字段。这是我有:将一行字段保存到一个变量中
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
?
答
此:
print " item:<"$item">";
应该是:
print " item:<"item">";
awk中可以看很多像C;变量名称前没有$。在awk中,$表示一个字段,所以$ item试图使用item的值作为记录的索引。在我实现awk(Mac OS)时,你写的脚本失败很快;我猜你的awk实现更加宽容(但在这种情况下不是以有用的方式)。
哦。我懂了。我只用了一下awk,所以我认为它可以像bash一样使用变量。我正在运行Kubuntu,它没有告诉我任何警告或错误。谢谢 – 2013-04-27 10:27:42