2016-10-11 2 views
0

Я не программист. Я знаю пару команд unix/linux (не знаю awk).Извлечение нескольких строк из двоичного файла командой STRINGS

Мне нужно извлечь текстовые строки, содержащие определенную последовательность символов строки.

Вот мой пример:

strings -f -n30 i15app.fmb | grep -i getApplQuota

Выход для этого:

i15app.fmb: v_return: = stud.i36pkg.getApplQuota (: b6.igxquota,

После этого результата необходимо извлечь несколько строк текста.

Для всех, кому интересно, мне нужно извлечь строки из программы форм Oracle и не иметь доступа к Forms Developer.

Возможно ли это?

С уважением,

Phlip

+0

«Мне нужно также извлечь ряд строк текста после этого результата». Означает ли это, что вам нужно отобразить число строк, где появилась строка? (1) или вам нужно знать, сколько строк текста появилось после каждого появления текста (2)? (1) легко 'strings -f -n30 i15app.fmb | grep -i getApplQuota | wc -l' (2) выглядит довольно сложно – user2706534

+0

Пожалуйста, отредактируйте Q, чтобы включить небольшой образец (даже если поддельный) вход ** и ожидаемый вывод **! Удачи. – shellter

+0

Привет, Спасибо за ответ; ответ на ваш вопрос, мне нужно извлечь несколько строк после строки, содержащей текст, независимо от того, содержат ли эти строки исходный текст: В моем примере строка «i15app.fmb: v_return: = stud.i36pkg.getApplQuota (: b6.igxquota ", но я также хочу выделить 5/10/20 строк, которые появляются непосредственно после этой строки, независимо от того, что строки 5/10/20 содержат текст, который я ищу, С уважением, Phlip – Phlip

ответ

2

попробовать это;

strings -f -n30 i15app.fmb | grep -i getApplQuota && strings -f -n30 i15app.fmb | grep -ic getApplQuota 

Grep -c будет печатать общие линии соответствуют

Eg;

[email protected]$ strings -f -n30 i15app.fmb | grep -i getApplQuota && strings -f -n30 i15app.fmb | grep -ic getApplQuota 
i15app.fmb: i15app.fmb: v_return := stud.i36pkg.getApplQuota(:b6.igxquota, 
i15app.fmb: i15app.fmb: v_return := stud.i36pkg.getApplQuota(:b6.igxquota, 
i15app.fmb: i15app.fmb: v_return := stud.i36pkg.getApplQuota(:b6.igxquota, 
i15app.fmb: i15app.fmb: v_return := stud.i36pkg.getApplQuota(:b6.igxquota, 
i15app.fmb: i15app.fmb: v_return := stud.i36pkg.getApplQuota(:b6.igxquota, 
i15app.fmb: i15app.fmb: v_return := stud.i36pkg.getApplQuota(:b6.igxquota, 
i15app.fmb: i15app.fmb: v_return := stud.i36pkg.getApplQuota(:b6.igxquota, 
7 
+0

Hallo Спасибо, что ответили. исходная команда strings -f -n30 i15app.fmb | grep -i getApplQuota возвращает все строки, содержащие текст, который я ищу. Поскольку я ответил на @Anil_M выше, я также хочу извлечь несколько строк, непосредственно следуя строка, в которой текст был найден независимо от того, содержат ли эти строки текст поиска. Я ожидаю, что мои командные строки -f -n30 i15app.fmb | grep -i getApplQuota возвратят что-то вроде – Phlip

+0

i15app.fmb: v_return: = stud.i36pkg .getApplQuota (: b6.igxquota , i15app.fmb: (: b6.igxqual, i15app.fmb: (: b6.igxitem, i15app.fmb: (: b6.igxanother_line, – Phlip

+0

Привет, Извините, я не смог получить форматирование ожидаемого результата в нескольких линий. Как ты это делаешь? – Phlip

Смежные вопросы