Как назначить несколько полей в переменную? - PullRequest
2 голосов
/ 17 октября 2011

Я хотел бы преобразовать файл data.txt в следующий вывод, используя awk 1liner

cat data.txt

  • персона нета нетб нетк
  • personB meta metb metc metd

....

выход:

  • personA имеет в своей сумке {neta netb netc} вещей
  • У человека в сумке {meta metb metc metd} есть

Ответы [ 4 ]

2 голосов
/ 17 октября 2011

это хорошее использование для subtr () и index ().

awk '{print $1FS"has {"substr($0,index($0,$2))"} itmes in his bag."}' data.txt

выход:

персона имеет в своей сумке {neta netb netc}.

personB имеет в своей сумке {meta metb metc metd} itmes.

1 голос
/ 17 октября 2011
while read line; do
  set -- $line
  person=$1
  shift
  printf "%s has {$s} items in his bag" "$person" "$*"
done < data.txt
1 голос
/ 17 октября 2011
awk '{$1=$1" has";$2="{"$2;print $0"} items in his bag"}' data.txt
0 голосов
/ 17 октября 2011

А как же:

awk '{ items=""; 
       for(i=2;i<=NF;i++) {items=items" "$i}; 
       gsub(/^[ ]/, "", items);
       print $1" has {"items"} items in his bag" }' data.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...