看似简单,但不是到目前为止。尝试了很多东西。最好的我有:
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的单个空间。
答案 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"
请注意:
--arg
命令行选项具有将shell字符串强制转换为JSON字符串的效果。