jq首先删除空格

时间:2018-03-03 18:57:03

标签: regex jq

看似简单,但不是到目前为止。尝试了很多东西。最好的我有:

echo "low quality      not gonna apologize" | jq -r 'gsub("[\\s+]"; " "; "g")'

parse error: Invalid numeric literal at line 1, column 4

目标是让1个空格替换任何类型的多个空格的任何出现。请注意,我已从此流中删除了标签和换行符。这是bash shell。我不会在我正在构建的较大应用程序的上下文中得到此错误,其中代码简单而安静地不会将多个空格更改为IDK的单个空间。

2 个答案:

答案 0 :(得分:1)

使用jq的正确方式:

echo "low quality      not gonna apologize" | jq -Rr 'gsub("\\s+";" ";"g")'
  • -R - 原始输入;每行文本都以字符串
  • 的形式传递给过滤器

输出:

low quality not gonna apologize

答案 1 :(得分:0)

许多替代方案中的两个:

$ echo '"low quality      not gonna apologize"' | jq -r 'gsub("\\s+"; " ")'
low quality not gonna apologize

$ jq -n --arg in "low quality      not gonna apologize" '$in | gsub("\\s+"; " ")'
"low quality not gonna apologize"

请注意:

  • 并非每个sh​​ell字符串都是JSON字符串。
  • --arg命令行选项具有将shell字符串强制转换为JSON字符串的效果。
  • 如果您使用' gsub',则无需指定" g"同样。