Как перенаправить только новейшую строку вывода в файл динамически? - PullRequest
0 голосов
/ 30 апреля 2020

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

artist - song name
artist - song name
artist - song name

Когда одна песня заканчивается, программа печатает следующего исполнителя и название песни в новой строке. Я хочу как-то передать вывод и сохранить только последнюю запись в файл таким образом, чтобы при появлении новой записи файл перезаписывался.

Возможно ли это с помощью простого конвейера в bash? Или я должен написать какой-нибудь скрипт для этого?

1 Ответ

1 голос
/ 01 мая 2020

Давайте посмеемся над программой, которая печатает название нового исполнителя / песни каждые несколько секунд с помощью функции оболочки:

printsong() {
    local i=0
    while :; do
        echo "artist - song $((++i))"
        sleep 3
    done
}

Теперь мы читаем из этой функции и перезаписываем файл каждый раз, когда получаем новый строка:

printsong | while IFS= read -r song; do echo "$song" > output; done

output теперь всегда будет содержать самую последнюю строку вывода из printsong.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...