Linux Shell脚本如何读取外部文件映射替换目标文件的用户ID为用户名
Shell脚本实现用户ID批量替换方案
实现思路
- 优先读取
Input_file.csv的映射规则,存入awk关联数组,键为用户ID,值为对应的用户名 - 逐行遍历
UserID.txt内容,全局替换所有匹配到的独立用户ID,避免出现部分匹配的异常 - 直接输出替换完成后的内容,支持重定向保存为新文件
可用实现脚本
#!/bin/bash # 校验依赖文件是否存在 if [ ! -f "UserID.txt" ] || [ ! -f "Input_file.csv" ]; then echo "错误:缺少必要文件UserID.txt或Input_file.csv" exit 1 fi # awk完成映射加载和全局替换 awk ' # 加载ID-用户名映射关系 NR == FNR { id_map[$1] = $2 next } # 逐行替换所有匹配的ID { for (id in id_map) { # 匹配独立ID,避免部分匹配错误 gsub("\\<" id "\\>", id_map[id]) } print } ' Input_file.csv UserID.txt
使用说明
- 将上述代码保存为
replace_id.sh - 给脚本赋予执行权限:
chmod +x replace_id.sh - 直接执行可输出替换结果,如需保存到文件可执行:
./replace_id.sh > 替换结果.txt
输出效果
执行后输出内容与预期完全一致:
Group1 = onetofour,ten2,tennyfour group2 = threefouteen,thirtytwo,Sixtytwo onetofour = Read Sixtytwo = Write
内容的提问来源于stack exchange,提问作者HJS
相关产品推荐
相关产品推荐

