>>> str="${str% *} 1"
>>>
>> как ваша конструкция работает, ибо я 1й раз такое вижу.
>> пс: а как вам мое решение?
> Оно работает, что главное. С точки зрения простых манипуляций логами - не
> вижу принципиальных отличий между sed и awk. здесь Вы не правы:
основное преимущество sed, в том, что он ПОСТРОЧНО обрабатывает вход => минимальное потребление ресурсов ОС и независимость от размера входящего потока данных.
основное преимущество awk в том, что его гибкость (читай использование скриптов) позволяет выполнить практически любую операцию над входным потоком данных и включать его в КОНВЕЙЕР. Он в отличие от sed работает не построчно с входящими данными, а с их блоками, что позволяет организовать более тонкую обработку. Но ресурсов ОС жрет тоже не много
sed и awk - это классика.
>[оверквотинг удален]
> Не могу оценивать с точки зрения сложных "рефаторингов" какого либо текста
> или кода. Но, не обладая доскональным пониманием синтаксисов как awk/sed, так
> и текста-цели, страшновато для сложных вещей "изобретать" собственные реализации инструментов
> на базе sed/awk и т.п. Неприятны вероятность ошибки и траты на
> исправления.
> Конструкция ${parameter%pattern} описана в разделе Parameter Expansion из man bash. '%'
> - оператор отрезать суффикс от значения переменной. То что правее '%'
> - шаблон, что подходит под шаблон вырезается. Если % одиночный, цель
> наикратчайшее совпадение. Двойной - самое длинное. '% *' означает последний пробел
> и что правее него.
А тут я с Вами соглашусь. Поскольку задача явно скорее студенческого характера, то большие объемы данных обрабатывать вряд ли придется (sed/awk не нужен). Так что лучше пользоваться нативными средствами шела.