Для справки, вам не нужны cat
и grep
, поскольку sed
могут это сделать только:
sed '/URL/!d;s/http/&s/'
В любом случае, предполагая, что вы запускаете цепочку команд, которые производят одну строку вывода, вы можете сделать:
... | tee -a report.txt | sed 's|[\&/]|\\&|g;s|.*|s/URL/&/g|' | sed -f- -i infile.json
Это добавляет выходные данные в report.txt
, но также передает его в sed
, которая превращает его в команду sed
, которая затем передается в другую команду sed
, который отредактирует файл .json
на месте.
Вы можете решить эту проблему, отредактировав свою команду следующим образом:
ps -eo pid,comm,cmd,start,etime | grep -i qtcreator | grep -v grep > file.txt
Таким образом вы исключаете ward grep из результата первого grep
Я думаю, что более чистым способом было бы использовать pgrep
с ps
:
ps -p $(pgrep <program-name>)
[iahmad@localhost]$ ps -p $(pgrep sendmail)
PID TTY STAT TIME COMMAND
32373 ? Ss 0:59 sendmail: accepting connections
32383 ? Ss 0:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue