如何在Linux中使用sed命令移除JSON文件中的"\t"字符?
解决JSON文件中"\t"字符无法移除的问题
先明确你要处理的是两种不同的"\t"情况,对应不同的解决命令:
如果文件里的是字符串形式的"\t"(也就是实际存储的是
\和t两个独立字符),你之前的sed命令匹配的是实际制表符,自然没效果。用这条命令:sed -i 's/\\t//g' input.json原因:shell环境里反斜杠需要转义,所以用
\\代表一个真实的\,这样sed才能正确识别并删除\t字符串。如果是实际的制表符(看不见的空白控制字符),之前的命令失效可能是shell解析问题,直接插入真实制表符即可:
sed -i 's/ //g' input.json(输入时按
Ctrl+V再按Tab键,就能插入真实的制表符)
用awk处理更稳妥,避免shell转义的坑:
- 处理字符串"\t":
awk '{gsub(/\\t/,"")}1' input.json > temp.json && mv temp.json input.json - 处理实际制表符:
awk '{gsub(/\t/,"")}1' input.json > temp.json && mv temp.json input.json
你可以先执行cat -A input.json确认类型:实际制表符会显示为^I,字符串"\t"会直接显示为\t,再对应选命令就行。
内容的提问来源于stack exchange,提问作者Test User
相关产品推荐
相关产品推荐

