Замените все, кроме прописных букв, первым параметром (с sed)

sed "s/[az]/$1/g" <old.txt>new.txt echo "done" 

Это заменяет только буквы нижнего регистра с указанным первым параметром. Я хочу заменить все, кроме прописных букв.

 sed "s/[^[:upper:]]/$1/g" 

Замените все символы, которые не считаются заглавной буквой в вашей языковой версии, с содержанием в $1 (при условии, что $1 не содержит символов «+», «обратная косая черта» или «косая черта» или «новая строка»).

Обратите внимание, что это не заменит байты, которые не являются частью допустимых символов. Он также с радостью преобразует комбинированные символы. Например, É является символом верхнего регистра. Если он написан как символ U + 00C9, он будет оставлен в покое, но если он будет записан как E а затем комбинируется с острым акцентом (U + 0301), это будет изменено на E$1 .