Для терминалов, которые его поддерживают, можно использовать escape-последовательности курсора сохранения и курсора восстановления :
#! /bin/sh -
save_cursor=$(tput sc) restore_cursor=$(tput rc)
text="\
XX----------------------------------------------------------XX
|XXX |XXX
| XX | XXX
| XX------------------------------------------------------+-----XXX
| | +
| | +----------------------------------------------------+ |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | $save_cursor$(date +%T) <------+ Characters to replace! |
| | | | |
| | | <--------------------------+ | |
| | | | |
| | | | |
| | | | |
+XX--+ | | |
XX | +----------------------------------------------------+ |
XXX |
+--------------------------------------------------------------+"
printf '%s\n' "$text"
while sleep 1; do
printf %s "$restore_cursor$(date +%T)"
done
Вам нужно сообщить grep
, что вы используете расширенное регулярное выражение:
grep -E '.+' file1
Стандартное Базовое регулярное выражение (используется grep
без -E
) эквивалент оператора Extended Regular Expression +
- \ {1, \}
, хотя некоторые реализации (например, GNU) также распознают \ +
для этого в качестве расширения (и вы всегда можете использовать .. *
).
(Обратите внимание, что в этом конкретном случае grep -E. +
эквивалентно grep -E.
, поскольку вы ищете подстроки, соответствующие регулярному выражению, когда не используете ] -x
параметр. Во многих системах egrep
предоставляется как эквивалентная команда для grep -E
, но, как Грэм указывает , это устарел .)
В GNU grep (по умолчанию в Ubuntu) вы также можете включить расширенное поведение с помощью обратной косой черты. Например:
grep '.\+' file1
Я считаю, что + - это расширенный метасимвол регулярного выражения. Попробуйте использовать egrep
.