Здравствуйте, друзья,
Лишь совсем недавно я начала обучения
SED одна команда ... Я обнаружил, что
SED быстрее в поисках моделей, чем некоторые из моих сценариев, который использует grep, чтобы проверить Патена внутри файла, используя строку поиска на строку метод, который занимает много времени.
Ниже скрипт "strMatch" является одним из них, который я использую для поиска шаблона. После того как картина была отображает структуру И прямой номер или номер строки, в одиночку, как это показано ниже.
> Введите
strMatch Sample.cpp "образец строки"
> Результат
5: ПЛАН СТРУННЫЕ
> Введите
strMatch Sample.cpp "План STRING" 2
> Результат
5
Многие из моих сценарий начал использовать этот сценарий, и зависимость на этот сценарий практически стал таким сложным, что новые сценарии, которые используются strMatch прямо или косвенно для различных целей, является медленным в исполнение. Я заметил, что следующие
SED Команда может быть использована для настройки strMatch увеличить скорость поиска ...
SED '/ ШАБЛОН STRING / P' Sample.cpp
Но мне нужно, чтобы получить номер строки, также как и мои предыдущие strMatch .... Есть ли способ печати выходных как ниже
Результат 1 [Номер строки И шаблон]
5 ПЛАН СТРУННЫЕ
Результат 2 [Номер строки, где была найдена схема]
5
Потому что некоторые из моих скриптов использует только эти номера строк ..... Просьба помочь в принятии strMatch сценарий быстро .... целью является strMatch для поиска шаблона и вернуть расположение шаблона или схемы наряду с места ..... Ниже приводится фактический strMatch сценария ...
есть особый случай обращения "включает" ключевое слово ..... Я не смог найти какой-либо альтернативы для "EXEC", чтобы передать содержимое файла с переменными, как таковой (с правильного выравнивания и )..... то, когда я веду поиск по ключевому слову включать ... она EXEC все файлы в папке ....... Я считаю, с
SED Команда я обыкновение быть, требующих "EXEC",
Спасибо заранее ...........


-------------------------------------------------- -----------------------
фильтра () (
План \u003d $ 1
строка \u003d $ 2
Для X-линии в $; делать
Флаг \u003d `Эхо $ X | grep-C $ шаблон`
если [$ флаг-экв 1], затем
вернуть $ флаг
еще
вернуться 0
FI
готово
)
# filterKeywords () (
#)
План \u003d $ 2
EXEC <$ 1
# fileCont \u003d `rdfil $ 1`
linCnt \u003d 1
exitCnt \u003d `lincnt $ 1`
CNT \u003d 0
кол \u003d 0
Режим \u003d $ 3
# rdfil $ 1
а читать строки; делать
если [ "$ 2" \u003d\u003d "включить"], затем
quitCon \u003d `Эхо $ LINE | grep-C "//-------------------------"`
если [$ quitCon-экв 1], затем
кол \u003d$(($ рассчитывать + 1))
если [$ кол-экв 2], затем
перерыв
FI
FI
FI
Статус \u003d `Эхо $ LINE | grep-C" $ 2 "`
если [$ статус-экв 1], затем
fflag \u003d `фильтр $ $ схема линии`
wcnt \u003d `Эхо $ fflag | WC-L`
если [$ wcnt \u003d\u003d 1], затем
если [$ exitCnt-GE $ НЦДЗ], затем
если [ "$ режиме"! \u003d "2"], затем
случае $ режиме
"NUM") # номер строки
Эхо $ linCnt
;;
"ФОН") # первого вхождения номер строки
Эхо $ linCnt
выезд
;;
"FOLN") # ВОЗНИКНОВЕНИЕМ ПЕРВОЙ ЛИНИИ
Эхо $ линия
выезд
;;
"Л. Н.") # ТОЛЬКО ЛИНИЯХ
Эхо $ линия
;;
*) # DEFAULT
Эхо $ linCnt: $ линия
;;
esac
# Эхо "Привет"
еще
Эхо $ linCnt
FI
# $ filterKeywords линия
FI
FI
FI
linCnt \u003d$(($ linCnt + 1))
НЦДЗ \u003d$(($ НЦДЗ + 1))
# эхо "---------------------------------------$ НЦДЗ $ exitCnt "
готово
# Эхо "Bye!"