将除大写字母之外的所有内容替换为给定的第一个参数(使用 sed)

将除大写字母之外的所有内容替换为给定的第一个参数(使用 sed)
sed "s/[a-z]/$1/g" <old.txt>new.txt 
echo "done"

这只用给定的第一个参数替换小写字母。我想替换除大写字母之外的所有内容。

答案1

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

将用 的内容替换所有在您的区域设置中不被视为大写字母的字符$1(前提是$1不包含&、反斜杠、斜杠或换行符)。

请注意,它不会替换不属于有效字符的字节。它还会愉快地转换组合字符。例如,É是一个大写字符。如果写为 U+00C9 字符,它将被保留,但如果写为E后跟组合锐音符字符 (U+0301),则它将更改为E$1

相关内容