使用Sed命令处理文本:规范以‘-- ’分隔的句子大小写格式
Sed处理文本大小写格式化解决方案
给你这个Sed命令就能实现需求:
sed -E 's/.*/\L&/; s/(^| -- )([a-z])/\1\U\2/g'
命令拆解
全局转小写
s/.*/\L&/会把整行所有字符统一转成小写:.*匹配整行全部内容\L标记后续所有字符转为小写格式&指代之前匹配到的整行文本
句子首单词首字母大写
s/(^| -- )([a-z])/\1\U\2/g专门处理每个句子的首单词:(^| -- )匹配两种句子起始位置:文本开头,或者--分隔符之后([a-z])捕获起始位置后的第一个小写字母\1保留匹配到的起始分隔符(行首空内容或--)\U\2把捕获到的小写字母转为大写g全局扫描文本,处理所有符合条件的位置
使用示例
如果输入文本保存在input.txt里,直接运行:
sed -E 's/.*/\L&/; s/(^| -- )([a-z])/\1\U\2/g' input.txt
也可以通过管道直接传入文本测试:
echo "Pluto Is A Dwarf Planet -- Chemical Elements Are Cool -- Astronomical Objects Live In Space -- The Solar System Is Our Home -- I Want To Live On Another Planet Next To My Wife." | sed -E 's/.*/\L&/; s/(^| -- )([a-z])/\1\U\2/g'
输出结果会完全符合你给出的示例要求。
内容的提问来源于stack exchange,提问作者coffeetime
相关产品推荐
相关产品推荐

