Запустите команду в режиме копирования

Я думаю, что задача состоит в том, чтобы удалить одну из 90 строк, затем одну из оставшихся 89 строк и т.д. -- Мы не можем удалить 90-ю строку, если осталось только 89.

eval $(for i in {90... 81}; do CMD="$CMD | sed $(( (RANDOM % $i)+1 ))d"; done; echo cat infile $CMD) > outfile

Цикл for накапливал серию строк, образуя конвейер в виде | sed NNd, где NN - случайное число из уменьшающегося диапазона, начинающегося от 1 до 90 и заканчивающегося от 1 до 81, что приводит к | sed 88d | sed 12d | sed 36d....

После формирования команды CMD мы добавляем cat infile к конвейеру CMD (отмечая, что CMD начинается с | из цикла for). Теперь CMD выглядит как cat infile | sed 88d | sed 12d...

Наконец, мы eval строку CMD, чтобы выполнить команду и поместить результат в outfile

1
05.01.2019, 03:29
1 ответ

В режиме копирования -вы можете использоватьcopy-pipe <command>с такой командой, как cat > ~/clipboard.

В Tmux 2.5 или более поздних версиях вы можете привязать это к Enter с помощью

bind-key -T copy-mode Enter send-keys -X copy-pipe "cat > ~/clipboard"

(или -T copy-mode-vi, в зависимости от настройки mode-keys)

См. также:функция копирования и вставки с неработающим xclip

2
27.01.2020, 23:42

Теги

Похожие вопросы