sed -e '/ pattern/{d; n}'

sed -e '/ pattern/{d; n}'

sed -e '/ pattern/{d}'

Являются ли эти две команды одинаковыми для Linux? Имеет ли смысл поставить n в конце?

От «man sed» я получил:

n N Считать/добавить следующую строку ввода в пространство шаблонов.

На самом деле, я прочитал эту строку (u-boot helper.mk):

  sed -n -e '/.*\.u_boot_list[^] \ + /! {d; n} '\
      -e /.* \ (\. u_boot_list [^] \ + \). * $$$$/\ 1/'\
      -e '/\ .[^\.]\+$$$$//' \
      -e ': s /^.\+$$$$/{p; s/^ \ (. * \) \. [^ \.] * $$$$/\ 1 /; b s}'
 
0

1 ответы

Две команды существуют, чтобы служить двум различным (хотя, казалось бы, похожим) целям. Однако в вашем случае «n» является избыточным. Отзыв:

Команда «n» выведет текущее пространство шаблона (если не используется флаг «-n»), пуст текущее пространство шаблонов и читается в следующей строке ввода.

Команда «d» удалила текущее пространство шаблонов, читает в следующей строке, помещает новую строку в пространство шаблонов и отменяет текущую команду и запускает выполнение в первой команде sed. Это называется началом нового «цикла».

Это краткое сообщение взято из сайта grymoire . Вы можете больше узнать о работе с несколькими строками здесь .

0
добавлено