jq首先删除空格

问题描述 投票:2回答:2

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

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的单个空间中的原因。

regex jq
2个回答
1
投票

jq正确的方式:

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

输出:

low quality not gonna apologize

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”。
© www.soinside.com 2019 - 2024. All rights reserved.