Попробуйте ниже команды,
awk ' { print $4 } ' upgradeddpkg > upgrade.txt
, Если Вы не хотите двоеточие :
тогда выполненный,
awk -F ':' ' { print $1 } ' upgrade.txt > upgrade1.txt
awk ' { print $4 } ' upgradeddpkg > upgrade.txt
В этом, awk берет вход от upgradeddpkg
и печатает только 4$ (номер столбца 4).That, вывод был перенаправлен к upgrade.txt
файл. Таким образом, файл upgrade.txt содержит только имена пакета с двоеточием. Для удаления двоеточия и его предстоящей части (после) необходимо выполнить вторую команду. По умолчанию awk рассматривает пространство как разделитель.
awk -F ':' ' { print $1 } ' upgrade.txt > upgrade1.txt
двоеточие Разделителя было вручную установлено, и awk рассматривает двоеточие как разделитель вместо пространства. Теперь awk берет вход (stdin) из upgrade.txt и печатает (stdout), coloumn1 (часть перед двоеточием).Finally стандартный вывод был перенаправлен к upgrade1.txt
.Now, это содержит только имена пакета.
Существует проблема с помощью grep для начального поиска, в который она включает вещи как ubuntu-release-upgrader-core:all
. Я использовал бы сингл awk
, чтобы соответствовать и выбрать правую сторону поля.
awk '$3=="upgrade" { print $4 }' /var/log/dpkg.log
По умолчанию awk разделяет каждую строку на основе пробелов. Третье поле является действием (таким образом, мы проверяем, что это равняется "обновлению"), и четвертым является имя пакета.
Некоторые пакеты обновлены много, таким образом, можно отключить шум дубликатов с:
awk '$3=="upgrade" { print $4 }' /var/log/dpkg.log | sort -u
<час> я видел ответ Avinash теперь... Я был бы немного осторожен из отрезания от архитектуры... В зависимости от того, что Вы делаете, они могли быть столь же релевантными как имя пакета... Но если бы Вы действительно хотели отрезать их, я, вероятно, сделал бы это в том же awk
оператор:
awk '$3=="upgrade" { split($4, a, ":"); print a[1] }' /var/log/dpkg.log | sort -u
, С другой стороны, Вы могли установить несколько разделителей полей для awk
, так, чтобы это разделило или на пробелах или на двоеточиях:
awk -F'[ :]' '$5=="upgrade" { print $6 }' /var/log/dpkg.log
libgtk-3-dev:i386 base-files:i386 bash:i386 dpkg:i386 e2fslibs:i386 e2fsprogs:i386
– CKing 16.05.2020, 09:50