Linux C-shell下如何保存Awk输出字符串并保留特殊字符
解决CSV字段特殊字符(大括号)丢失问题
问题原因
大括号丢失是因为Shell的路径扩展(大括号扩展)机制:当变量未被引号包裹时,Shell会把{a-09}识别为大括号扩展语法,尝试生成匹配的字符串,因无符合条件的结果,最终直接剔除了大括号。
正确操作步骤
1. 正确赋值变量
赋值时用双引号包裹命令替换结果,避免Shell解析特殊字符:
- Bash环境:
var=$(awk -F ',' 'NR==236{print $6}' File.csv)
- Csh/Tcsh环境:
set var = "`awk -F ',' 'NR==236{print $6}' File.csv`"
2. 输出变量时加引号
查看变量内容时,同样用双引号包裹变量名,防止二次扩展:
echo "$var"
补充说明
如果CSV字段包含逗号(标准CSV会用引号包裹这类字段),单纯用awk -F ','分割会出错,这时需要用支持CSV解析的工具(如csvkit);当前场景字段无逗号,上述方法可直接解决问题。
内容的提问来源于stack exchange,提问作者Devin
相关产品推荐
相关产品推荐

