Awk 如何将多个字段指定给变量?

Awk 如何将多个字段指定给变量?,awk,Awk,我想使用awk 1liner将data.txt文件转换为以下输出 cat data.txt neta netb netc角色 人材 输出: personA的包中有{neta netb netc}项 personB的包中有{meta metb metc metd}项 那么: awk '{ items=""; for(i=2;i<=NF;i++) {items=items" "$i}; gsub(/^[ ]/, "", items); pr

我想使用awk 1liner将data.txt文件转换为以下输出

cat data.txt

  • neta netb netc角色
  • 人材

输出:

  • personA的包中有{neta netb netc}项
  • personB的包中有{meta metb metc metd}项
    • 那么:

      awk '{ items=""; 
             for(i=2;i<=NF;i++) {items=items" "$i}; 
             gsub(/^[ ]/, "", items);
             print $1" has {"items"} items in his bag" }' data.txt
      
      awk'{items=”“;
      
      对于(i=2;i这是subtr()和index()的一个很好的用法

      输出: personA的包里有{neta netb netc}个时间

      人的包里有{meta metb metc metd}个字

      读取行时;执行以下操作
      设置--$line
      每人=$1
      转移
      printf“%s”的包“$person”$*”中有{$s}个项目
      done
      awk '{$1=$1" has";$2="{"$2;print $0"} items in his bag"}' data.txt
      
      awk '{print $1FS"has {"substr($0,index($0,$2))"} itmes in his bag."}' data.txt
      
      while read line; do
        set -- $line
        person=$1
        shift
        printf "%s has {$s} items in his bag" "$person" "$*"
      done < data.txt