【问题标题】:jq: error: syntax error, unexpected INVALID_CHARACTER (Unix shell quoting issues?) at <top-level>jq:错误:语法错误,在 <top-level> 出现意外的 INVALID_CHARACTER(Unix shell 引用问题?)
【发布时间】:2020-05-21 08:57:42
【问题描述】:

我正在关注这个link 在我的 ubuntu 机器中将数据从 mysql 流式传输到 kafka 主题。那里,在 Kafka Connect 设置主题,当我运行以检查我的连接器是否正在运行时(如建议的那样):

curl -s "http://localhost:8083/connectors" | jq '.[]' | xargs -I mysql-connector curl -s "http://localhost:8083/connectors/mysql-connector/status" | jq -c -M '[.name,.connector.state,.tasks[].state] | \
join(":|:")'| column -s : -t| sed 's/\"//g'| sort

我收到了这个错误:

jq: 错误:语法错误,意外的 INVALID_CHARACTER(Unix shell 引用问题?)在第 1 行: [.name,.connector.state,.tasks[].state] | \
jq: 1 编译错误 (23) 书写体失败 (23) 书写体失败

我完全被困住了。如果可能,请任何人提供帮助。
注意:这不是重复的问题,虽然存在类似标题的问题,但问题不同,我已经检查好了。

【问题讨论】:

  • 去掉尾部反斜杠。在引号内,您不需要(或不想)转义换行符。
  • 另外,将sed 's/\"//g' 替换为tr -d '"'
  • 更好的是,只需删除sed 并将-r 添加到jq。不确定您的格式,但 -r 通常是去除引号的更好方法。

标签: shell curl jq apache-kafka-connect


【解决方案1】:

你在滥用\。使用:

curl -s "http://localhost:8083/connectors" | 
jq '.[]' |
xargs -I mysql-connector curl -s "http://localhost:8083/connectors/mysql-connector/status" |
jq -c -M '[.name,.connector.state,.tasks[].state] |
join(":|:")' |
column -s : -t |
tr -d \" |
sort

jq 全部放在一行可能更简洁,但关键是如果您尝试在单引号内转义换行符,您最终会在jq 命令中得到一个文字反斜杠不属于那里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多