Используя sed
По умолчанию sed
читается разделенный строкой ввод. Эта команда удалит все до последнего \r
в строке:
sed 's/.*\r//'
Например:
$ echo $'line1\n\hi\rhello\rworld' | sed 's/.*\r//' line1 world
Чтобы использовать это с tee
, мы можем использовать процесс подстановки :
echo $'line1\n\hi\rhello\rworld' | tee >(sed 's/.*\r//' >Outfile)
В bash эта конструкция >(...)
называется процессом замещения . Он запускает команды в скобках и помещает их в подобный файлу объект. tee
запись в файл-подобный объект, и команды обрабатывают ввод.
Использование awk
Точно так же это удаляет все перед последним \r
в новой строке:
awk -F'\r' ''
Опция -F'\r'
устанавливает для разделителя полей возврат каретки. Следовательно, мы хотим печатать только последнее поле $NF
в каждой строке, разделенной новой строкой. Таким образом, print $NF
.
Например:
$ echo $'line1\n\hi\rhello\rworld' | awk -F'\r' '' line1 world
Чтобы использовать это с tee
:
echo $'line1\n\hi\rhello\rworld' | tee >(awk -F'\r' '' >Outfile)