Что на самом деле происходит в этой команде?

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  [^"]*                    any character except: '"' (0 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  "                        '"'
--------------------------------------------------------------------------------
  \(                        group and capture to \1:
--------------------------------------------------------------------------------
    [^"]*                    any character except: '"' (0 or more
                             times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  \)                        end of \1
--------------------------------------------------------------------------------
  "                        '"'
--------------------------------------------------------------------------------
 .*                       any character except \n (0 or more times
                           (matching the most amount possible))

Второй компонент команды sedвызывает \1для использования того, что было «захвачено» в скобках. Следует отметить, что вся команда sedсама по себе не является регулярным выражением. В конструкции s/needle/pin/gрегулярное выражение имеет вид needleили, если вам нравится, когда ваши регулярные выражения «завернуты» (e. г. для использования в awk), /needle/.

5
24.10.2019, 11:34
1 ответ

Возможно, будет смысл немного изменить перенаправления:

<<< Hey > text.txt cat text.txt

Heyотправляется на стандартный ввод cat в виде строки. text.txtоткрывается для записи и усекается. Так что, если бы в нем был какой-то текст, он бы исчез.

catвыполняется с аргументом text.txt. Поскольку в качестве аргумента был указан файл, стандартный ввод игнорируется, поэтому Heyне используется. text.txtбыл усечен, поэтому, когда catпроходит через аргумент text.txt, выводить нечего, поэтому text.txt, который является стандартным выводом catчерез перенаправление, продолжает оставаться пустым.

11
27.01.2020, 20:34

Теги

Похожие вопросы