Я думаю, что задача состоит в том, чтобы удалить одну из 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
В режиме копирования -вы можете использовать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