Разбор файла для номера в UNIX - PullRequest
2 голосов
/ 09 февраля 2012

В поисках лучшего способа извлечения числа из последней строки в файле. Пример содержимого:

# Provider added by blah
#
security.provider.3=org.bouncycastle145.jce.provider.BouncyCastleProvider
#
# Provider added by blah
#
security.provider.4=org.bouncycastle145.jce.provider.BouncyCastleProvider
#
# Provider added by blah
#
security.provider.79=org.bouncycastle145.jce.provider.BouncyCastleProvider

Я хотел бы проанализировать последнюю строку в файле и вернуть число после: security.provider.

Это то, что я использую, и кажется, что только первая цифра выглядит лучше: security.provider.

tail -1 filename | cut -c19

Я знаю, что могу использовать:

tail -1 filename | cut -c19,20 

но я бы не знал, является ли число однозначным или двойным и т. Д.

Ответы [ 3 ]

2 голосов
/ 09 февраля 2012

Вы можете использовать sed как:

tail -1 file | sed -r 's/security\.provider\.([0-9]+).*/\1/'
1 голос
/ 09 февраля 2012

Вы можете сделать это, используя sed один вкладыш:

sed -ne '$s/security\.provider\.\([0-9]\+\).*/\1/p' <file>
0 голосов
/ 09 февраля 2012

Предполагая, что ваша последняя строка всегда точно "security.provider.xxx =", и вы хотите xxx:

$ sed -n \$p file | cut -d= -f 1 | cut -d. -f 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...