在尝试了网站上共享的所有代码但没有成功后,我问这个问题,
我有一个包含很长文本的文件,所有文本仅在第一行
我想将带有符号的长行附加到该文件的末尾,我的行如下所示:
[{\n"code":"final .net.wifi.WifiManager wifi \u003d\n "typeName":"","palette":"9","type":" ","spec":"Enable WiFi"}]'
\n
我想附加包含诸如和 之类的符号的行[{]"...
。到第一行末尾的现有文件。
答案1
由于您的行非常复杂并且包含许多转义字符,因此我建议使用 Bash 等某些 shell 支持的 printf "%q" 。您可以使用以下简短脚本:
#!/usr/bin/env bash
read -r
printf "%q\n" "$REPLY"
运行它并粘贴您的行:
$ ./printf-q.sh
[{\n"code":"final .net.wifi.WifiManager wifi \u003d\n "typeName":"","palette":"9","type":" ","spec":"Enable WiFi"}]'
\[\{\\n\"code\":\"final\ .net.wifi.WifiManager\ wifi\ \\u003d\\n\ \"typeName\":\"\"\,\"palette\":\"9\"\,\"type\":\"\ \"\,\"spec\":\"Enable\ WiFi\"\}\]\'
最后一行以您可以在 shell 中使用的形式显示,无需添加额外的转义字符,如下所示:
$ echo \[\{\\n\"code\":\"final\ .net.wifi.WifiManager\ wifi\ \\u003d\\n\ \"typeName\":\"\"\,\"palette\":\"9\"\,\"type\":\"\ \"\,\"spec\":\"Enable\ WiFi\"\}\]\' >> FILE
$ cat FILE
[{\n"code":"final .net.wifi.WifiManager wifi \u003d\n "typeName":"","palette":"9","type":" ","spec":"Enable WiFi"}]'
答案2
使用此处引用的文档:
cat >>file <<'END'
[{\n"code":"final .net.wifi.WifiManager wifi \u003d\n "typeName":"","palette":"9","type":" ","spec":"Enable WiFi"}]'
END
这会将此处文档的内容附加到名为 的文件的末尾file
。由于此处文档被引用,从首字母周围的单引号可以明显看出END
,shell 不会进行任何扩展或文件名通配或其他数据解释。