>> А можно увидеть аналоги на cut(1) от осиляторов?
> А можно увидеть не искусственные примеры, а реальные?Можно. Это были (подчищенные) примеры из history.
for i in $(seq 1 50); do $(time anon13377001; done|& tail -n +10 |awk '{sum+=$10} END {print "Sum;"sum, "Avg:"sum/NR}'
>> фильтруем дубликаты
> См. sort(1), uniq(1). И не надо рассказывать, что порядок строк важен, потому что в таком случае дубликаты будут идти подряд, и uniq их благополучно отфильтрует без сортировки. Если же они идут не подряд, значит
> порядок значения не имеет, и можно сортировать.
Яснопонятно. Л-логика 🙄
Во-первых, тогда уж сразу sort -u -k
Во-вторых, полей может быть > 1 (да-да, так тоже бывает) или же просто порядок строк может соотв. хронологии/порядку обращения к чему-то, но не совпадать с сортировочным критерием.
Чтобы далеко не ходить:
tail -n20 /tmp/anon/xtitle|tac
0x00c00004 ▏Midori ▏ forum.opennet.ru
0x01200009 ▏URxvt ▏ urxvt
0x00c00004 ▏Midori ▏ forum.opennet.ru - "Судебный иск против Adblock Plus, манипулирующий изменением ..." (64)
0x01800003 ▏Claws-mail ▏ anonnet - Claws Mail 3.17.3
0x01200009 ▏URxvt ▏ anon@anonim: ~
0x0260008a ▏Pale moon ▏ Palmström: The Lambda Calculus for Absolute Dummies (like myself) - New Moon
0x01200097 ▏URxvt ▏ urxvt
0x02400002 ▏mpv ▏ Sugar Glider: The Airborne Marsupial - mpv
0x01200016 ▏URxvt ▏ anon@anonim:/home/vids/pr0n
0x01200097 ▏URxvt ▏ urxvt
0x01200016 ▏URxvt ▏ anon@anonim:/home/vids/pr0n
0x01200009 ▏URxvt ▏ anon@anonim: ~
0x012000b4 ▏URxvt ▏ urxvt
0x01800003 ▏Claws-mail ▏ anonnet - Claws Mail 3.17.3
0x00c00004 ▏Midori ▏ forum.opennet.ru - "Выпуск системного менеджера systemd 242" (165)
0x0220006f ▏Emacs ▏ emacs@anonnet
0x0200000c ▏Geany ▏ scanner.re - Geany
0x01200097 ▏URxvt ▏ urxvt
Запись (xtitle) фокуса окон приложений в порядке обращения к ним. Как убрать дубликаты по WID (первое поле), сохранив порядок, с помощью sort/uniq?
>> используем второе поле из первого файла в качестве критерия выборки строк второго
> Если тебе постоянно приходится решать такие задачи, категорически рекомендую SQL.
См. список вверху, теперь берем актуальный список активных окон и с помощью того самого "искусственного" примера:
wmctrl -l | awk 'FNR==NR{id[$1]=$0} FNR<NR {if(id[$1]) print id[$1] }' /tmp/anon/winlist - | dmenu_alt_button -l 30 -nf "#111111" -fn "Iosevka Slab:regular [...]
получаем косты^W кастомную переключалку между приложениями по горячей клавише, с поиском, фильтром, шахматессами и неплохой шустростью даже на старье десятилетней давности:
% time winswitch.sh
winswitch.sh 0,03s user 0,05s system 96% cpu 0,078 total
С нетерпением жду мастер-класс от анонима с использованием SQL 🙄