Преобразование строк с нулевым символом в конце JSON строк с помощью jq - PullRequest
0 голосов
/ 17 февраля 2020

Я придумал однострочник на основе jq, который преобразует последовательность строк с нулевым символом в конце в последовательность JSON строк:

xargs -0 dash -c 'for i in "$@"; do printf %s "$i" | jq -Rs . ; done' _dummy_

Я бы хотел вырежьте xargs и / или dash из него, если это возможно. Есть ли способ сделать то же самое с помощью jq?

Пример использования:

# Create a new dir with some funny-named files
mkdir funny
cd funny
touch $'ABC\nDEF' $' GHI\nJKL ' ' - はじめまして - '
# Use find -print0 to list the files
find -type f -print0 |
# Convert the null-terminated lines to JSON strings
xargs -0 dash -c 'for i in "$@"; do printf %s "$i" | jq -Rs . ; done' _dummy_

Вывод:

"./ - はじめまして - "
"./ GHI\nJKL "
"./ABC\nDEF"

1 Ответ

1 голос
/ 17 февраля 2020

Следующий результат дает указанный вами вывод:

find . -type f -print0 | jq -Rs 'split("\u0000")[]'
...