Как выяснилось, OP имеет доступ только к минимальной версии sed
, которая не распознает команду замены \ L, и для его случая использования допустимо использование заглавных букв ВСЕ в выводе.
Самый простой способ добиться этого - с помощью команды
tr [:upper:] [:lower:]
, хотя для этого, безусловно, существуют и другие жизнеспособные варианты, такие как решение "pure bash", предложенное @PesaThe, или использование sed
"y."команда transform, как это было предложено Андреа Джаммарки, если она доступна (хотя я бы сказал, что два других варианта предпочтительнее, поскольку в них применяются инструменты, более специализированные для выполнения задачи).
Если ТОЛЬКО первая заглавная буква выходных данных можетбыть преобразованным и команда замены sed
\ L недоступна, я бы предложил обратиться к более способному языку сценариев или программирования, где задача должна быть тривиальной для решения.Это должно быть возможно и в «чистом ключе», но подходы, которые я могу придумать вне очереди, кажутся непропорционально сложными.
Для иллюстрации, вот минимальная программа на С, которая соответствует задаче, даннойсоответствующая ситуация кодирования:
#include <stdio.h>
main() {
int c;
while ((c = getchar()) != EOF) {
if (c >= 'A' && c <= 'Z') {
putchar(c + 'a' - 'A');
break;
}
putchar(c);
}
while ((c = getchar()) != EOF) putchar(c);
}