анализ данных с помощью команды sed

Обычно программа запускается с аргументами? Возможно, когда вы запускаете его в gdb, вы не предоставляете те же аргументы, которые используются для запуска процесса, к которому вы присоединяетесь вручную.

Вы можете определить любые аргументы, которые запущен запущенный экземпляр, с помощью следующей команды:

ps aux | grep [process_name]

Аргументы будут перечислены в выводе, например:

auser      1114  2.8  6.8 316652 139928 ?       SLl  Aug07   3:24 /usr/local/bin/a_program arg1 arg2 arg3

Вы можете установить аргументы в gdb, используя set args:

(gdb) set args arg1 arg2 arg3
0
29.04.2018, 20:38
2 ответа

Только с sedпо желанию:

sed -n '/cdn1/p' "$YOUR_FILE"| sed 's/^.*\(https.*dmg\).*/\1/g'

Или короче:

sed -n 's/^.*\(https.*dmg\).*/\1/p' "$YOUR_FILE"
sed -n 's/^.*\(https.*\.[a-z]\{2,3\}\).*/\1/p' "$YOUR_FILE"
sed -n 's/^.*\(https\?.*cdn1.*\.[a-z]\{2,3\}\).*/\1/p' "$YOUR_FILE"
0
28.01.2020, 02:18

sed и подобные им НЕ подходят для обработки данных XML/HTML.
Используйте соответствующие синтаксические анализаторы XML/HTML, напримерxmllintилиxmlstarlet.

Сxmllintвы бы сделали:

xmllint --html --xpath 'string(//a[text()="click here"]/@href)' input.html

Выход:

https://cdn1.evernote.com/mac-smd/public/Evernote_RELEASE_7.1_456448.dmg

  • string(//a[text()="click here"]/@href)-ключевое выражение xpath для выбора aтега, текстовое значение которого равно click here, и получения строкового представления его hrefатрибута
4
28.01.2020, 02:18

Теги

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