Можно сделать:
paste_with_header() (
IFS=$(printf '\t') # or IFS=$'\t' with some shells
printf '%s\n' "$*"
paste -- "$@"
)
paste_with_header text_file* > all_data.txt
"$*"
расширен до списка позиционных параметров (аргументы функции )объединены с первым символом $IFS
, который мы установили в TAB
, символ, который paste
также использует для соединения строки файла.
Чтобы удалить расширения файлов в заголовке, с помощьюzsh
:
paste_with_header() (
printf '%s\n' ${(pj:\t:)@:r}
paste -- "$@"
)
${@:r}
заменяется корневым именем (расширение удаляется )каждого позиционного параметра. j:\t:
флаг расширения параметра для присоединения к \t
. С p
, что \t
интерпретируется какTAB
Или с ksh93
, zsh
или bash
, предполагая, что файлы имеют расширение или что ни один каталог в их компонентах пути не содержит точек:
paste_with_header() (
IFS=$'\t'
printf '%s\n' "${@%.*}"
paste -- "$@"
)
${@%.*}
удаляет самую короткую завершающую часть, которая соответствует .*
в конце каждого из позиционных параметров.(foo.txt
становится foo
, но имейте в виду, что ./foo
становится пустой строкой ).
(те, очевидно, предполагают, что имена файлов не содержат табуляций или символов новой строки ).
jq -r '.aggregations."2".buckets[] | select(.doc_count < 100).key' file.json
Это позволит выбрать элементы в массиве .aggregations."2".buckets[]
, у которых .doc_count
меньше 100, а затем получить значение .key
для каждого из них.
Перенаправьте результат этого в файл, чтобы сохранить его.