systemd apt закреплен на -1 и установлен при обновлении с Debian 8 до Debian 9

Я не думаю, что это будет возможно с помощью простых инструментов вроде cut . Или, по крайней мере, нелегко. Вот решение Perl:

$ perl -lane '$k=join " ",grep{/hello/}@F; print "$F[1] $k" if $k' file 
ID23 hello1
ID47 hello2
ID49 hello3 hello4

которое вы могли бы упростить, используя сначала grep :

$ grep hello file | perl -lane 'print "$F[1] ", join(" ", grep{/hello/}@F)'
ID23 hello1
ID47 hello2
ID49 hello3 hello4

Объяснение

Параметр -n указывает perl читать его построчно ввести и применить скрипт, заданный как -e . Флаг -l добавляет новую строку ( \ n ) к каждому вызову print . Параметр -a заставляет perl разбивать свои входные строки по пробелам в массив @F .

Итак, сам скрипт ищет все элементы @F (все столбцы), соответствующие hello , и сохраняет их как строку, разделенную пробелами $ k ( $ k = join "", grep {/ hello /} @ F; ). Затем печатаются 2-е поле ( $ F [1] ) и $ k , если определено $ k , если хотя бы одно hello .

Вторая версия такая же, за исключением того, что нам не нужно $ k и печатать напрямую, поскольку мы знаем, что всегда будет присутствовать хотя бы одно hello .

3
27.02.2017, 14:32
0 ответов

Теги

Похожие вопросы