【发布时间】:2020-05-06 15:24:31
【问题描述】:
我需要在 bash 中打印一个 json 文件,文件的每个元素都适合一行。
有几个元素有很多字符,当我打印它时,它们需要几行。
我想找到一种 bash 打印开头 + $ 的方法。美元符号表示没有显示附加文本。
感谢您的帮助。
杰拉德
【问题讨论】:
-
请在您的问题中添加示例输入(无描述、无图像、无链接)和该示例输入所需的输出(无评论)。
我需要在 bash 中打印一个 json 文件,文件的每个元素都适合一行。
有几个元素有很多字符,当我打印它时,它们需要几行。
我想找到一种 bash 打印开头 + $ 的方法。美元符号表示没有显示附加文本。
感谢您的帮助。
杰拉德
【问题讨论】:
这个脚本是这样做的:
#!/bin/bash
LEN=$1
# If no length has been provided as argument,
# using the terminal width-1 as default.
if [[ -z $LEN ]]; then
LEN=$(tput cols)
let LEN=LEN-1
fi
IFS=''
while read LINE; do
[[ ${#LINE} -ge $LEN ]] && LINE="${LINE:0:$LEN}$"
echo "$LINE"
done < /dev/stdin
将其保存为trim.sh 并像这样使用:
jq . your.json | ./trim.sh 25
参数值 25 是所需的长度。省略它以默认使用终端窗口宽度。
唯一需要注意的是禁用jq 的颜色输出。您可以使用-C 参数强制启用它jq,但它会破坏脚本的输出。不知道如何解决。
【讨论】: