sed: что означает «/»?

x=`src/lstat64 $TEST_DIR/$tmp.1 | sed -n -e '/ Links: /s/.*Links: *//p'` 

В этом скрипте. Я понимаю эту часть "/s/.*Links: *//p'" единственное, что я не понимаю, это '/ Links: ' что означает "/ " ?

  • Замена шаблона только тогда, когда он соответствует целому слову
  • как изменить полную строку с помощью опции sed c
  • Верните только строку с совпадением в sed
  • sed: подписать в строке, которая содержит X, но не содержит Y
  • Сделайте несколько изменений с помощью одного вызова sed
  • Использование команды sed изменяет строку на определенной строке с определенной строкой
  • Удалить новую строку из переменной unix
  • Как добавить строку после n-го появления ключевого слова с помощью sed?
  • 3 Solutions collect form web for “sed: что означает «/»?”

    / Links: / – фильтр адресов. Это означает: «Применить следующую операцию только к тем линиям, которые соответствуют фильтру». В этом случае фильтр является регулярным выражением; это также может быть номер строки, область строки, начало регулярного выражения и комбинация повторного выражения и даже условие «каждая n-я строка» с некоторыми реализациями sed .

    У вас есть неправильное понимание. ваша команда может быть интерпретирована как:

     sed - n -e '/pattern/ s/pattern/replace pattern/p' 

    Таким образом, первые два / принадлежат /pattern/ , что означает соответствие регулярному выражению:

     /regexp/ Match lines matching the regular expression regexp. 

    единственное, что я не понимаю, это '/ Links:'

    Ваши выражения sed фильтруют строки, соответствующие шаблону Links: (с ведущим и конечным пространством) и выполняет замену

     s/.*Links: *// 

    Кроме того, использование -n подавляет автоматическую печать пространства шаблонов, а p печатает текущее пространство шаблонов.

    Подводя итог, sed конвейер будет печатать только строки, соответствующие Links: на входе после выполнения замены s/.*Links: *// .

    Цитата из man sed :

      -n, --quiet, --silent suppress automatic printing of pattern space p Print the current pattern space. /regexp/ Match lines matching the regular expression regexp. s/regexp/replacement/ Attempt to match regexp against the pattern space. If successful, replace that portion matched with replacement. The replacement may contain the special character & to refer to that portion of the pattern space which matched, and the special escapes \1 through \9 to refer to the corresponding matching sub-expressions in the regexp. 
    Linux и Unix - лучшая ОС в мире.