Этот сценарий делает следующее:
#!/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
, но он блокирует вывод скрипта. Не знаю, как исправить.