Использование tee для добавления строки в файл, а также использовать ее в качестве замены шаблона в другом файле

У меня есть следующий код:

cat file | grep example | sed 's/http/https/' >> report.txt 

Вывод этой команды:

 https://example.com/page/index.html 

Это добавит ссылку с HTTPS в файл. Однако я хотел бы, чтобы этот же результат также заменил «URL» во втором файле.

Содержание второго файла:

 TEXT TEXT TEXT URL TEXT TEXT 

Желаемое изменение во втором файле:

 TEXT TEXT TEXT https://example.com/page/index.html TEXT TEXT 

Это возможно?

PS: Я не могу повторить команду еще раз, так как на самом деле это не простой кот, а процесс загрузки, который запускает команду.

3 Solutions collect form web for “Использование tee для добавления строки в файл, а также использовать ее в качестве замены шаблона в другом файле”

Для записи вам не нужна 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 но также report.txt его в sed который превращает его в команду sed которая затем передается в другое sed которое будет редактировать файл .json на месте.

Это короткий ответ на короткий вопрос:

 cat file | grep URL | sed 's/http/https/' | tee -a report.txt | while read $LINE; do sed --in-place -e "s·URL·$LINE·" thejsonfile.json done 

Обязательно замените все три в сценарии sed некоторым персонажем, не содержащимся в $LINE , или оставьте его как · (средняя точка).

EDIT: Я только что узнал из другого вопроса, что конвейер в цикл while read считается плохой практикой из-за производительности и других причин. Это сделает вашу работу, ты, поэтому я оставляю это здесь.

 sed -n '/example/s/http/&s/p' file | tee -a report.txt |\ sed -e 'G;s/$/./;G;s/$/wq/;h;s|.*|/URL/c|;G' | ed -s - json_file 

Мы создаем ed код на основе первого вывода и используем его для редактирования json-файла.

  • Как использовать команду tee с эхом в соответствии с требованиями ниже?
  • Почему эта команда работает для вывода сценария регистрации?
  • Как создать реальную копию дескриптора файла stdout и stderr без использования unbuffer / script / tee только с встроенными встроенными в bash?
  • Перенаправление вывода
  • grep ключевое слово из вывода Mplayer и отправить остальное в файл
  • скрипт bash, вызывающий другой скрипт, вызывает отказ в файле журнала
  • tee stdout to stderr?
  • Возможно ли «разблокировать» STDOUT в двух разных местах?
  • Перенаправить все вывод сценария bash (изнутри скрипта) в два файла: один append, one rewrite; но отбрасывать вывод на консоль
  • Как написать файл с netcat? И установите, чтобы он вырос до определенного размера и начал переписывать себя?
  • Как `tee` удалять все строки CR только в файле, но не stdout?
  • Interesting Posts

    Обмен буфером обмена между ОС хоста и виртуальной консолью виртуального клиента VirtualBox

    Как изменить размер LVM в Fedora 17?

    Systemd: останавливать основной процесс (или службу) при сбое подпроцесса

    Как передать параметры forcefsck?

    systemd: autofs, содержащие autofs, не размонтирует

    Unix Program (не ab) для создания локальных запросов на локальный сервер с разными IP-адресами

    Могу ли я использовать команду «cp» с опцией -b, но не сработала ли она, если файл резервной копии уже существует?

    Ошибка ввода-вывода при попытке создания моментального снимка Btrfs

    Как я могу искать имена файлов, которые начинаются с xy_ *, и создаются / редактируются сегодня?

    Шифровать каталог с помощью GnuPG?

    Как активировать драйвер шмеля?

    Можно ли настроить auth.log о том, какой ключ был использован?

    Невозможно выполнить seanage fcontext –add в Fedora 21 с использованием целевой политики

    alias Невозможно выполнить команду источника

    Поиск количества файлов в системе btrfs без использования find

    Linux и Unix - лучшая ОС в мире.