Как передать параметр sed?

Если быть более точным – как передать параметр в программу, которая затем вызывает sed – как я могу передать этот параметр?

У меня есть файл 'source_code.sc'.
У меня есть сценарий sed «find_expect»:

#n /expect/{ = p } 

что я вызываю изнутри программы, которая перебирает файлы с помощью

 sed -f find_expect.= source_code.sc 

что печать находит с номерами строк, например

 712 expect(it).to be_true 

Однако этот поиск жестко запрограммирован для поиска «ожидать». Как я могу изменить это, чтобы сам текст поиска также передавался. Я также перебираю файлы с помощью find, поэтому sed в настоящее время вызывается для многих файлов. Например, чтобы искать «blob», программа, циклически перемещающая файлы, будет ссылаться на нее

 sed -f find_expect.= "$file_from_loop" source_code.sc 'blob' # with 'blob' being passed in from the main script # which would be invoked with `./change_all.sh 'blob' # I don't pass the file pattern in to this main call as I just # recursively do all files (that match a pattern) from the current directory down 

  • Backreference в регулярном выражении Awk
  • grep -A с обратной совпадением распечатывает только несоответствие в поле после
  • Обработка переменных sed с помощью путей в них?
  • sed для печати шаблона, который охватывает линии
  • Замените строку «string | string»
  • Изменение формата валюты на общий номер с помощью sed
  • Как извлечь XML из текстового файла
  • Заменить текст многострочным шаблоном
  • One Solution collect form web for “Как передать параметр sed?”

    Похоже, вы пытаетесь переустановить grep . Вместо sed просто используйте:

     grep -n -- "$var" file 

    Если var содержит метасимволы регулярных выражений, которые вы хотите сопоставить буквально, -F параметр -F в grep :

     grep -nF -- "$var" file 

    где var содержит желаемый шаблон.

    На странице man grep(1) :

    -n, –line-number
    Префикс каждой строки вывода с номером строки 1 в его входном файле. (-n указан POSIX.)

    Если вы настаиваете на использовании sed , вы можете сделать функцию для этой цели:

     notgrep (){ if [ $# -ne 2 ];then echo "Usage: notgrep <pattern> <file>" exit 1 end sed -n "/$1/{ = p }" "$2" } 
    Interesting Posts

    Разрешения Unix: удалить / добавить файл, но не изменять содержимое

    Разрешение группы каталогов

    Как печатать строки, если два поля имеют одинаковые значения?

    Как преобразовать файл хрома os bin из Source Forge в iso?

    «Попытка вызвать каталог» / srv / http «как скрипт» ошибка с «SetHandler application / x-httpd-php» включена в конфигурации apache на archlinux

    запускать команды внутри awk перед печатью

    как показать цвета в syslog

    Unison заменяет новые символические ссылки на старые файлы с помощью опции -force newer

    Использовать-резервную сетевую оболочку (сеть приятно)

    Как проверить скрипт оболочки, если исполняемый файл запущен или нет?

    Копирование файлов из одной вспомогательной директории в другую

    Можно ли использовать TLSv1.3 в Apache 2.4

    init-скрипты в autoyast для автоматического развертывания сервера Suse Linux

    Как восстановить файл «/etc/init.d/skeleton»?

    Имитация оболочки оболочки GNU в tmux

    Linux и Unix - лучшая ОС в мире.