Вероятно, вам нужно приложение "xdotool":
$ xdotool клавиша F2 -для отправки F2 на экран
$ xdotool key 1 -для отправки числа 1 на экран
Другие варианты использования:
http://manpages.ubuntu.com/manpages/trusty/man1/xdotool.1.html
Выражение jq
[.a,.b,.c]
извлекает все нужные нам элементы из входных объектов и помещает их в массив. Некоторые из этих элементов могут быть массивами, поэтому нам нужно сгладить все элементы :
.[.a,.b,.c] | flatten
Для объекта ввода
{
"a": "arbiter",
"b": "brisk",
"c": [
"cloak",
"conceal"
]
}
это генерирует массив
[
"arbiter",
"brisk",
"cloak",
"conceal"
]
и вы получите аналогичный, но отдельный массив из второго объекта.
Чтобы объединить эти два массива в один, мы можем просто передать данные через .[]
, но сокращенный способ записи flatten |.[]
— flatten[]
. Используя это, мы приходим к
[.a,.b,.c] | flatten[]
Резюме:
echo '...as in the question...' |
jq '[.a,.b,.c] | flatten[]'
Если вы хотите дополнительно отсеять какие-либо значения null
, отфильтруйте через select(. != null)
или извлеките значения, используя [.a//empty,.b//empty,.c//emtpy]
, или отфильтруйте через map(.//empty)
перед flatten[]
.
В качестве комментария :Ваш ввод JSON создается с помощью простого echo
в вопросе. Однако, чтобы правильно создать JSON в командной строке, рассмотрите возможность использования такого инструмента, как jo
, который дополнительно кодирует ваши данные для включения в документ JSON :
Второй пример JSON можно создать с помощью двух jo
вызовов
jo a=arbiter b=brisk 'c[]'=cloak 'c[]'=conceal
jo a=astound b=bistro 'c[]'=confer 'c[]'=consider
Хорошо, это было довольно тривиально. Нет необходимости ни в восхитительной библиотеке Python JSON, ни даже в снижении уровня универсальности awk или sed для этого. Достаточно написать:
> echo '{"a": "arbiter", "b": "brisk", "c": ["cloak", "conceal"]} {"a": "astound", "b": "bistro", "c": ["confer", "consider"]}' | jq '.a,.b,.c[]'
и получаем:
"arbiter"
"brisk"
"cloak"
"conceal"
"astound"
"bistro"
"confer"
"consider"