Сценарий оболочки для списка заблокированных пакетов во FreeBSD

Я пытаюсь сделать oneliner, чтобы иметь возможность перечислять все заблокированные (запрещенные обновления) пакеты во FreeBSD.

Обычно вы выдаете эту команду:

pkg info -ak 

Он выводит список всех пакетов в системе, включая заблокированные и разблокированные, которые не работают для меня, так как я хочу только заблокированных. Если я grep «да», он делает именно то, что я хочу:

 pkg info -ak | grep yes 

Он выводит следующие данные:

 nginx-devel-1.5.10 yes php5-extensions-1.7 yes php55-5.5.8 yes 

Теперь, я хочу, чтобы иметь возможность редактировать этот вывод немного, изменив строку «да» для следующего ( добавление имени пакета w / version опущено ):

 nginx-devel-1.5.10 locked, run: sudo pkg unlock nginx-devel php5-extensions-1.7 locked, run: sudo pkg unlock php5-extensions php55-5.5.8 locked, run: sudo pkg unlock php55 

Я пробовал безуспешно ( newb здесь ):

 pkg info -ak | grep yes | sed s/yes/"locked - run: sudo pkg unlock $(pkg info -ak | grep yes | cut -d - f1-2)"/ 

Хотя то, что я пробовал, не работает, я разместил его только для того, чтобы вы поняли, чего я пытаюсь достичь.

 pkg info -ak | grep -w yes | while read line; do packnum=`echo $line | awk '{print $1}'`; pack=`echo $packnum | awk 'BEGIN{FS=OFS="-"}{$NF=""; NF--; print}'` ; printf "%-33s%s\n" "$packnum" "locked, run: sudo pkg unlock$pack" ;done 

Я добавил параметр -w для вашего grep чтобы избежать путаницы с пакетами, содержащими «да» в их имени.