предварительная печать jq bash - PullRequest
0 голосов
/ 06 мая 2020

Мне нужно напечатать файл json в bash таким образом, чтобы каждый элемент файла поместился в одну строку.

Есть пара элементов с множеством знаков, и когда я их распечатываю они занимают несколько строк.

Я бы хотел найти способ, которым bash печатает начало + $. Знак доллара означает, что дополнительный текст не отображается.

Спасибо за вашу помощь.

Gerard

1 Ответ

0 голосов
/ 06 мая 2020

Этот сценарий делает следующее:

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

...