Linux bash引号中使用|、$符号方法及CSV特殊字符替换指南
问题1:Bash环境引号内使用竖线|、美元符号$的方法
Bash的引号分为单引号、双引号两类,两种场景下的用法分别如下:
- 单引号场景:单引号会将包裹的所有内容识别为字面字符串,特殊字符不会被解析,直接写|、$即可,不需要额外转义。
示例:执行echo 'test|123 $var',输出结果为test|123 $var,$不会被识别为变量前缀,|也不会被识别为管道符。 - 双引号场景:双引号默认会解析$为变量前缀,竖线|不会被解析,因此仅需要对$加反斜杠\转义即可。
示例:执行echo "test|123 \$var",输出结果和上述单引号场景完全一致。
问题2:Bash中替换CSV文件内&、|、$为逗号的实现
推荐使用sed命令完成批量替换,操作简单性能高,具体用法如下:
- 常规Linux环境(GNU sed)原地修改文件,不需要备份原文件:
执行命令:sed -i 's/[&|$]/,/g' 目标文件.csv - 如果需要自动备份原文件(会生成后缀为.bak的原文件副本):
执行命令:sed -i.bak 's/[&|$]/,/g' 目标文件.csv - 如果你使用的是macOS自带的BSD sed,原地修改的写法调整为:
执行命令:sed -i '' 's/[&|$]/,/g' 目标文件.csv
命令说明:s/[&|$]/,/g代表全局匹配&、|、$三个字符中的任意一个,替换为逗号,使用单引号包裹表达式可以避免对$额外转义。
内容的提问来源于stack exchange,提问作者Mahmood Maleki
相关产品推荐
相关产品推荐

