redirect output of command to /dev/null

perl -pe 'BEGIN{$/=""} 
          s/^(NAME#AAAA.*\n)(AGE.*?)(\n+)$/#$2\n$1AGE NIL$3/s' ex1

очень краткие пояснения:

For all the registers in input                 |  perl -p
   separator= one or more empty lines          |     BEGIN{$/=""}
do:
  | substitute                                 |     s/
  |   ^(NAME AAAA.*\n)(AGE.*?)(\n+)$           |       regex /
  |    1              2       3                | 
  | by                                         |      /subst. string including
  |   # $2 \n  $1   AGE NIL   $3               |       capture groups/
  |                                            |
  | and print                                  |  ...from option -p

Обновление:

Можно ли использовать переменные вместо NAME # AAAA?

perl -pe '
    BEGIN{
       $/=""; 
       $f=shift;  }
    s/^(NAME#$f.*\n)(AGE.*?)(\n+)$/#$2\n$1AGE NIL$3/s' AAAA  ex1

В этой версии мы должен предоставить аргумент шаблон (например: «AAAA»):

  • строка 4: получить первый аргумент из командной строки («AAAA») и сохранить его в $ f
  • строка 5: развернуть $ f в шаблоне замены.
4
29.06.2016, 22:10
1 ответ

Есть два потока вывода от процесса, которые обычно отправляются на терминал: стандартный вывод (который привязан к файловому дескриптору 1) и стандартный поток ошибок. (который привязан к файловому дескриптору 2). Это позволяет легко разделить ожидаемый результат и сообщения об ошибках или другую диагностическую информацию, которая обычно не ожидается.

Когда вы используете перенаправление (> ), оно запускает только стандартный вывод в указанный файл или место, оставляя стандартную ошибку нетронутой. Это позволяет вам увидеть, есть ли ошибки (например, те, которые вы видите).

Если вы хотите отправить весь вывод, включая стандартную ошибку, вам необходимо перенаправить оба потока:

/path/to/program arg1 arg2 > /dev/null 2>&1

Или, альтернативно, но более явно:

/path/to/program arg1 arg2 > /dev/null 2> /dev/null

Синтаксис 2> & 1 означает «Отправить вывод в настоящее время идет к файловому дескриптору 2 в то же место, куда идет вывод, идущий в файловый дескриптор 1 ".> опускает значение по умолчанию для FD1, поэтому семантически оно совпадает с 1> , что может сделать 2> более понятным.

6
20.08.2021, 12:04

Теги

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