Есть ли способ записать в файл данные, полученные в бесконечном цикле? У меня есть сценарий, который отображает веб-контент в моем терминале, как он отображается на веб-странице. Но все мои попытки до tee
привели к созданию пустого файла. Я полагаю, что это потому, что, не выходя из цикла, нет возможности писать что-либо в файл. Но я читал о бесконечных циклах, заполняющих жесткий диск с нежелательными данными. Таким образом, похоже, что запись вывода из конвейера команд также должна быть возможна.Как записать в файл данные, полученные в бесконечном цикле
get_page() {
osascript -e \
'tell application "Google_Chrome" to tell window 1 to tell active tab to execute javascript "document.body.innerText"'
}
while get_page | grep -E '[:alnum:]'
do
sleep 1 &
done < <(get_page) | awk '!x[$0]++'
Обратите внимание, что единственная причина, это работает на всех является awk !x[$0]++
команда, которая (поправьте меня, если мое объяснение не является точным) считывает входные данные он получает, а затем удаляет повторяющиеся строки в то же время сохраняя порядок строк как Что ж. Без этого на месте этот сценарий был бы сумасшедшим.
С man-страницы 'uniq' - * Повторяющиеся строки на входе не будут обнаружены, если они не смежны, поэтому может потребоваться сначала отсортировать файлы. * Команда' awk' в вопросе будет обнаруживать все дублирует и сохраняет заказ. Это то, что я использую много. Ваше решение выводит данные и также позволяет использовать команду 'tee', но' awk' необходим для вывода только поистине уникальных строк. Я не понимаю, когда я использую ваше решение и заменяю 'uniq' на' awk' никакие данные не выводятся на мой терминал или в выходной журнал. –
@ user556068 Вы правы насчет 'uniq'. Было слишком рано утром. Сожалею. Получает ли 'getpage' сам по себе данные по стандартным выводам? – Kusalananda
Да, он производит то, что в настоящее время отображается на экране браузера. И дальнейшее тестирование показывает, что 'awk' выводит данные только в том случае, если это последняя команда в конвейере. Поэтому я могу 'tee' в выходной журнал, а затем использовать' awk' после этого, но при этом получается выходный журнал размером 3 мб за 60 секунд. –