如何在shell管道中保留转义字符串?

时间:2018-04-20 08:57:49

标签: bash sh

我有一个带有json条目的日志文件。为了实现目标,请执行以下操作:

tail -f path/to/logfile | while read line; do echo $line | json ; done

json - > https://www.npmjs.com/package/json

问题是json可以包含转义字符串作为值并回显它们可以消除转义。

{"a":"\"Hello\""} -> {"a":""Hello""}

1 个答案:

答案 0 :(得分:3)

确实

tail -f path/to/logfile | while read -r; do echo "$REPLY" | json ; done

修好吗?

我知道默认情况下read解释\转义符,如果指定要读入的变量,它会发生奇怪的事情。

我也知道在shell脚本中使用不带引号的变量是一个麻烦的方法。

因此read -r禁用反斜杠处理,使用$REPLY代替$line,并引用"$REPLY"

我还查看了json文档。它有一个名为" streaming"的东西。将

tail -f path/to/logfile | json -ga

做你想做的事吗?