如何用sed仅处理等号左侧字符,实现键名格式转换?
键值对文件键名转换方案
需求:将键值对文件中,等号左侧的键名里的.和-替换为_,同时转为全大写,等号右侧的值保持不变。
可行的sed命令
直接用sed的多编辑命令即可完成,无需复杂操作:
sed -e 's/[.-]/_/g' -e 's/^[^=]*/\U&/' input.txt
命令解释
-e:用于指定多个独立的编辑操作s/[.-]/_/g:全局匹配键名中的.和-,替换为_(g确保一行内所有匹配的符号都被替换)s/^[^=]*/\U&/:匹配行首到第一个=之间的所有内容(即完整键名),\U&将匹配到的内容转为全大写
示例验证
输入文件内容:
a.key.one-example=a_value_one a.key.two-example=a_value_two
执行命令后输出:
A_KEY_ONE_EXAMPLE=a_value_one A_KEY_TWO_EXAMPLE=a_value_two
直接修改原文件
如果需要直接修改原文件(而非输出到终端),可以添加-i参数:
- Linux/GNU sed:
sed -i -e 's/[.-]/_/g' -e 's/^[^=]*/\U&/' input.txt
- macOS/BSD sed:
sed -i '' -e 's/[.-]/_/g' -e 's/^[^=]*/\U&/' input.txt
内容的提问来源于stack exchange,提问作者Antoine Mathurin
相关产品推荐
相关产品推荐

