#bash #substring
#bash #подстрока
Вопрос:
Я пытаюсь извлечь 43
(результат downloader / request_count) в строке ниже:
OUT="[scrapy.statscollectors] INFO: Dumping Scrapy stats: {'downloader/request_bytes': 21394, 'downloader/request_count': 43, 'downloader/request_method_count/GET': 43, 'downloader/response_bytes': 1030981, 'downloader/response_count': 43, 'downloader/response_status_count/200': 43, 'item_scraped_count': 41"
На первом шаге я выполнил value=${OUT#*request_count':}
, который возвращает:
43, 'downloader/request_method_count/GET': 43, 'downloader/response_bytes': 1030981, 'downloader/response_count': 43, 'downloader/response_status_count/200': 43, 'item_scraped_count': 41
Но когда я пытаюсь удалить правую часть, я получаю сообщение об ошибке:
value2=${value%,*}
или
value2=$(cut -d, -f1 $value)
Есть идеи?
Заранее спасибо за вашу помощь!
Ответ №1:
%
удаляет максимально короткую строку, используйте %%
для удаления максимально длинной:
value2=${value%%,*}
# ~~
Кроме того, вы также можете удалить пробел после двоеточия:
value=${OUT#*request_count': }
# ~