【发布时间】:2016-11-11 10:04:52
【问题描述】:
我正在尝试使用转义的双引号打印文件内容。
# read file contents from ${filename}
# - escape double quotes
# - represent newlines as '\n'
# print the result
echo "my file contents: \"${out}\""
例如,如果我的文件是
<empty line>
console.log("hello, world");
<empty line>
应该打印出来
my file contents: "\nconsole.log(\"hello, world\");\n"
我尝试将 printf 与 %q 格式说明符一起使用,但遇到了删除尾随空格的问题。
【问题讨论】:
-
哇,这真是一个不寻常的壮举。做什么的? [如果你愿意,我可以为它制作一个 C 程序]
-
显示 如何 你在尝试
printf %q-- 我向你保证,它本身并不会删除尾随空格。另一方面,如果您在命令替换中运行它(或以这种方式运行cat),则... -
另外,其他人也有权利——如果你想生成 JSON,请使用专为这项工作构建的工具。
-
@PaulStelian 我也可以在 C 语言中做到这一点;)我想要一个简短的脚本来做到这一点
-
@PetrPetrov,这是真的,因为
$(cat file)本身会删除尾随的换行符。相反,请尝试:IFS= read -r -d '' content <file; printf '%q\n' "$content"