如何打印文件内容时解释转义序列,使其在终端正确展示
失效原因说明
你使用的命令无法得到预期结果,存在两个问题:
xargs默认会将输入中的反斜杠识别为转义标记,直接吃掉了文件里的\,导致传递给echo的内容变成了hello n world- 多数shell内置的
echo默认不开启转义序列解析,需要添加-e参数才会识别\n这类转义符
可用解决方案
- 方案1:使用
printf(兼容性最好,全平台通用,支持所有标准转义序列解析)
printf '%b\n' "$(<file)"
%b是printf专用的转义解析格式符,会自动处理输入字符串中的所有反斜杠转义序列,$(<file)是bash中读取文件内容的高效写法,等价于$(cat file)。
- 方案2:修正原有管道写法
cat file | xargs -d '\n' -I {} echo -e {}
-d '\n'参数指定xargs仅将换行作为输入分隔符,不再处理反斜杠转义,保留文件中原有的\,搭配echo -e开启转义解析即可得到预期效果。
- 方案3:仅针对
\n转义的轻量替换方案
sed 's/\\n/\n/g' file
直接将文件中所有字面量\n替换为实际换行符,不需要依赖额外的转义解析逻辑。
内容的提问来源于stack exchange,提问作者honestSalami
相关产品推荐
相关产品推荐

