Как добавить новый текст после каждой совпадающей строки с помощью команды оболочки?

ожидать , для другой цели. Это выполняет команды на присоединенной программе. Вы, в отличие от этого, просите способ отправить команды в процесс, уже работающий в фоновом режиме.

Как скелеты минимальный пример того, что вы хотите, давайте создадим FIFO:

$ mkfifo in

FIFO А является специальным файлом, который один процесс может записать в то, в то время как другой процесс читает из него. Позволить создать процесс для чтения из нашего файла FIFO в :

$ python <in &
[1] 3264

Теперь, давайте отправим python команда для выполнения от текущей оболочки:

$ echo "print 1+2" >in
$ 3

вывод от python 3 и появляется здесь на stdout. Если мы перенаправили stdout Python, он мог бы быть отправлен в другое место.

то, Что ожидают , делает

, ожидают , позволяет вам автоматизировать взаимодействие с присоединенной командой. Как пример того, что ожидают , может сделать, создать файл:

#!/usr/bin/expect --
spawn python
expect ">>>"
send "print 1+2\r"
expect ">>>"

Затем петляйте с , ожидают :

$ expect myfile
spawn python
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 1+2
3
>>> 
0
18.08.2015, 20:30
2 ответа

С awk :

awk '
/ODB_ACTIAVTION SUCCESSFUL/{printf "%s\nChanges has been updated to all servers\n", $0}
/ODB_ACTIAVTION UNSUCCESSFUL/{printf "%s\nNo change\n", $0}
' <in >out

С sed :

sed -e '
  /ODB_ACTIAVTION SUCCESSFUL/a\
  Changes has been updated to all servers
  /ODB_ACTIAVTION UNSUCCESSFUL/a\
  No change
' <in >out
1
28.01.2020, 02:27
awk '/ODB_ACTIAVTION SUCCESSFUL/ {printf "%s\nChanges has been updated to all servers\n", $0}
     /ODB_ACTIAVTION UNSUCCESSFUL/ {printf "%s\nNo change\n", $0}' file1 > file2
2
28.01.2020, 02:27

Теги

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