Как передать параметр 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 

  • Преобразование многострочных линий в одну строку с помощью SED
  • Замена параметров mysql с помощью sed
  • Как вырезать каждую строку из определенной строки?
  • Команда Shell для удаления первой строки, заключенной с косой чертой
  • Как заменить пользовательскую строку даты в текстовом файле
  • Удалить целую строку, если после ":" меньше 4 символов
  • Как удалить количество строк из файла повторно
  • Удалите несколько строк после соответствия шаблону, но только после соответствия шаблону
  • 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

    Проблемы с загрузкой в ​​lubuntu

    Проверка среды рабочего стола из командной строки

    Сервер Linux не принимает TCP-соединения

    Слияние большого набора данных самым быстрым способом

    Как я могу сказать cron запускать команду каждый день (нечетный / четный)

    Как читать определенные строки после поиска текста?

    Правила Iptables Для PING, Whois, DNS, NTP, SSH, HTTP (S), FTP

    Что такое непривилегированный контейнер LXC?

    Могу ли я ограничить пользователя (и их приложения) одним сетевым интерфейсом?

    Удаление старых файлов в каталоге, кроме файлов, присутствующих в файле исключений

    Читайте от определенного момента до определенного символа

    Установите Linux из dvd в dead windows 7 machine

    rsync –delete не удалял файл в пункте назначения, а с помощью ssh

    Когда вы не хотите, чтобы `cp` был рекурсивным?

    Есть ли способ отправить пакеты через одного интернет-провайдера и получить ответы через другой?

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