如何用Bash处理JSON文件:筛选.js路径、遍历操作并替换相对路径
完全可以实现,你可以直接使用awk配合Bash完成所有需求,适配你提供的规整JSON结构,不需要额外依赖。
完整实现脚本
将以下内容保存为process.sh:
#!/bin/bash # 处理file.txt并生成新的JSON文件 awk ' # 匹配所有.js后缀的文件路径行 /"[^"]+\.js",?$/ { # 提取完整的文件路径 match($0, /"([^"]+\.js)"/, path_arr) full_path = path_arr[1] # -------------------------- # 此处替换为你的自定义操作,例如echo文件名 print "当前处理文件:" full_path | "cat >&2" # 也可以直接调用系统命令,例如:system("echo " full_path) # -------------------------- # 提取最后一段文件名,拼接为相对路径 sub(/.*\//, "", full_path) # 保留原缩进、逗号格式,输出替换后的行 printf " \"./%s\",\n", full_path next } # 非.js后缀的行直接原样输出 1 ' file.txt > output.json # 如需直接覆盖原文件,取消注释下行 # mv output.json file.txt
运行方式
- 给脚本加执行权限:
chmod +x process.sh - 执行脚本:
./process.sh
效果说明
- 自动识别所有
.js结尾的文件路径,匹配逻辑符合你给出的正则规则 - 自定义操作的输出默认定向到标准错误,不会污染最终生成的JSON内容
- 生成的
output.json完全符合你期望的格式,非.js文件路径保持不变 - 如果后续你的JSON结构变得更复杂(比如多字段嵌套、数组压缩为单行),建议优先使用
jq工具处理JSON,稳定性更高。
内容的提问来源于stack exchange,提问作者user2490003
相关产品推荐
相关产品推荐

