Показать символ в позиции в файле

Вы можете поместить dnf updateinfo list updates security в цикл for в сценарии cli или bash. I по-прежнему настоятельно рекомендую просмотреть обновления безопасности, но вы всегда можете разрешить добавить команду -y для dnf update

. Это то, что у меня работает в зависимости от некоторых потребностей:

for i in $(dnf updateinfo list updates security | grep -Ei ^fedora | cut -d' ' -f3) ; do dnf update $i; done

Или немного короче с awk (имейте в виду, что это не работает с --refresh)

for i in $(dnf updateinfo list updates security | awk 'NR>1 {print $3}') ; do dnf update $i; done

для dnf --refresh

for i in $(dnf updateinfo list updates security| dnf updateinfo list updates security| awk 'NR>1 {print $3}') ; do dnf update $i; done
10
16.04.2016, 10:55
3 ответа

С sed :

$ echo 12345 | sed 's/.\{4\}\(.\).*/\1/;q'
5
$ echo 1234ắ | sed 's/.\{4\}\(.\).*/\1/;q'
ắ

Обратите внимание, что sed не сможет произвести вывод, если вы введете недопустимый multi -байтовые символы в текущей локали. Вы можете использовать LC_ALL = C , если вы работаете только с однобайтовыми символами.

С файлом ASCII вы также можете использовать dd :

$ echo 12345 | dd bs=1 skip=4 count=1 2>/dev/null
5
7
27.01.2020, 20:01

Если вам нужен 5-й байт, считая от 1:

dd ibs=1 skip=4 count=1

или

tail -c +5 | head -c 1

Обратите внимание, что хвост отсчитывается от 1, поэтому для файла, содержащего abcdefg , выводится e .

dd и tail -c находятся в POSIX. head -c распространен, но отсутствует в POSIX; это в GNU coreutils, BusyBox, FreeBSD и NetBSd, но не в OpenBSD или Solaris.

13
27.01.2020, 20:01

Или с использованием (gnu)grep:

grep -zoP '.{4}\K.'   file

(-z использовался для борьбы с n до 5-го символа)

2
27.01.2020, 20:01

Теги

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