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/
.
Возможно, будет смысл немного изменить перенаправления:
<<< Hey > text.txt cat text.txt
Hey
отправляется на стандартный ввод cat в виде строки. text.txt
открывается для записи и усекается. Так что, если бы в нем был какой-то текст, он бы исчез.
cat
выполняется с аргументом text.txt
. Поскольку в качестве аргумента был указан файл, стандартный ввод игнорируется, поэтому Hey
не используется. text.txt
был усечен, поэтому, когда cat
проходит через аргумент text.txt
, выводить нечего, поэтому text.txt
, который является стандартным выводом cat
через перенаправление, продолжает оставаться пустым.