Awk 将行字段保存到变量中

Awk 将行字段保存到变量中,awk,Awk,我试图制作一个简单的脚本,我需要在变量中保留一个字段。这就是我所拥有的: BEGIN{ FS=":"; } { print; item=$1; print " "$1; print " "$2; print " item:<"$item">"; } 开始{ FS=“:”; } { 印刷品; 项目=1美元; 打印“$1; 打印“$2; 打印“项目:”; } 我不明白的是,当我向脚本传递一行时,这是输出: main.o: s

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

BEGIN{
  FS=":";
}

{
    print;
    item=$1;
    print "    "$1;
    print "    "$2;
    print "  item:<"$item">";
}
开始{
FS=“:”;
}
{
印刷品;
项目=1美元;
打印“$1;
打印“$2;
打印“项目:”;
}
我不明白的是,当我向脚本传递一行时,这是输出:

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?!
main.o:src/main.cpp src/CMenu.h src/CUtils.h src/CAbsPlayer.h\//给定行
main.o//字段1
src/main.cpp src/CMenu.h src/CUtils.h src/CAbsPlayer.h\//字段2
项目://field1?!
为什么这不起作用,为什么整行都保存到
项中?

这是:

print "  item:<"$item">";
打印“项目:”;
应该是:

print "  item:<"item">";
打印“项目:”;
Awk看起来很像C;变量名前没有$。在awk中,$表示一个字段,因此$item尝试使用item的值作为记录的索引。在我的awk(Mac OS)实现中,您编写的脚本很快就会失败;我想您的awk实现更为宽松(但在这种情况下没有任何帮助)。

这是:

print "  item:<"$item">";
打印“项目:”;
应该是:

print "  item:<"item">";
打印“项目:”;

Awk看起来很像C;变量名前没有$。在awk中,$表示一个字段,因此$item尝试使用item的值作为记录的索引。在我的awk(Mac OS)实现中,您编写的脚本很快就会失败;我想您的awk实现是比较宽松的(但在这种情况下没有什么帮助)。

噢。我懂了。我只是简单地使用了awk,所以我认为它会像bash一样使用变量。我正在运行Kubuntu,它不会告诉我任何警告或错误。谢谢。我懂了。我只是简单地使用了awk,所以我认为它会像bash一样使用变量。我正在运行Kubuntu,它不会告诉我任何警告或错误。谢谢