如何使用jq将文本转换为每个单词首字母大写的标题格式
使用 jq 实现文本标题化的方法
标题化即把文本中每个单词的首字母转为大写,其余字符保持不变,比如"lorum ipsum"转换后得到"Lorum Ipsum",用 jq 可以通过分割、遍历处理、拼接三步实现:
基础实现命令
针对普通单空格分隔的文本,直接使用以下命令即可:
# 输入示例字符串,输出转换后结果 echo '"lorum ipsum"' | jq 'split(" ") | map( .[0:1] | ascii_upcase + .[1:] ) | join(" ")'
命令逻辑说明
split(" "):将输入的字符串按空格分割为单个单词组成的数组map(...):遍历数组中的每一个单词做统一处理:- 取单词的第一个字符
.[0:1],调用ascii_upcase转为大写 - 拼接单词从第二个字符开始的剩余内容
.[1:]
- 取单词的第一个字符
join(" "):将处理完成的单词数组用空格重新拼接为完整字符串
兼容复杂场景的实现
如果文本存在连续空格、单词前后有特殊符号的情况,可以用正则匹配提取单词后再处理,避免空元素干扰:
echo '"lorum ipsum dolor_sit amet"' | jq '[scan("\\w+")] | map( .[0:1] | ascii_upcase + .[1:] ) | join(" ")'
上述命令输出结果为"Lorum Ipsum Dolor_sit Amet"。
内容的提问来源于stack exchange,提问作者Skurhse Rage
相关产品推荐
相关产品推荐

