Чтобы удалить все повторяющиеся символы (, сохранив только первое вхождение ), вzsh
:
$ s="There are seven pencils"
$ printf '%s\n' ${(j::)${(s::u)s}}
Ther asvnpcil
Этот подход нельзя использовать, если вы хотите исключить некоторые символы из этого дублирования de -(, например символ пробела в вашем примере ).
s::
разделить пустую строку, чтобы разбить строку на символьные составляющие , как это делают некоторые реализации awk
с пустойFS
u
:уникальный :удалить дубликаты в результирующем массиве j::
:объединить элементы массива с пустыми строками между ними. Попробуйте (Пример после 10 символов):
echo "asjdajsdoiajsodijaosidjaoijsdoaijoasjoadi" | sed -e "s/.\{10\}/&\n/g"
То, как yourapp
записывает вывод, является его собственным решением. Вы можете массировать вывод (, как сказано в другом ответе ), но чтобы изменить формат вывода, вам нужно изменить yourapp
.