Bash如何将点分隔姓名转换为首字母加姓氏格式的实现方法
Bash子串操作实现姓名格式转换方案
核心实现逻辑
完全使用Bash原生参数扩展(子串操作),不需要依赖awk、cut等外部工具,核心是两个操作的拼接:取首字母 + 提取点后的姓氏部分。
用法示例
1. 处理单个姓名
# 定义待处理的姓名字符串 name="xavier.blodot" # 子串拼接得到结果 result="${name:0:1}${name#*.}" # 打印输出 echo "${result}"
运行后输出:xblodot
2. 批量处理多行输入
如果你需要一次性处理给出的两个姓名的多行输入,可直接用循环读取处理:
while IFS= read -r line; do echo "${line:0:1}${line#*.}" done << 'EOF' xavier.blodot wisoyo.hadi EOF
运行后输出:
xblodot whadi
语法说明
用到的两个Bash原生子串操作规则:
${变量:起始索引:截取长度}:从指定索引(从0开始计数)截取指定长度的子串,${name:0:1}就是取字符串第一个字符(首字母)${变量#匹配规则}:删除变量内容中最短的匹配前缀,${name#*.}的匹配规则是*.,会删除从开头到第一个.的所有内容,仅保留.后面的姓氏部分
内容的提问来源于stack exchange,提问作者aDoN
相关产品推荐
相关产品推荐

