как урезать список обновленных пакетов dpkg

  1. , Когда Вы хотите сохранить 'широкие' символы (Unicode).
  2. Да: 255 из них (исключая 0).
  3. Да.
  4. Вот вводная статья: http://www.joelonsoftware.com/articles/Unicode.html
1
задан 16.05.2020, 09:48

2 ответа

Попробуйте ниже команды,

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, это содержит только имена пакета.

3
ответ дан 16.05.2020, 09:49
  • 1
    Можно ли объяснить, что это делает? – MikeMB 16.05.2020, 09:49
  • 2
    почти сделанный, но это включает двоеточия также как libgtk-3-dev:i386 base-files:i386 bash:i386 dpkg:i386 e2fslibs:i386 e2fsprogs:i386 – CKing 16.05.2020, 09:50
  • 3
    теперь выполните вторую команду, двоеточие будет удалено. Заключительный список пакета будет, появляется на upgrade1.txt. – Community 16.05.2020, 09:50
  • 4
    Уверенный @AdityaPatil, ожидайте. – insidesin 16.05.2020, 09:50

Существует проблема с помощью 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
3
ответ дан 16.05.2020, 09:48

Теги

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