Имеете ли вы правильные разрешения на папку/файл .ssh и .ssh/authorized_keys? В зависимости от конфигурации вашего SSH-сервера могут потребоваться строгие разрешения. Также убедитесь, что права собственности указаны правильно.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Вы можете сначала извлечь 100 случайных чисел из 3494, а затем извлечь эти номера строк из каждого файла, например,
seq 3494 | shuf -n 100 | awk 'NR==FNR{ z[$0]++;next}
{if (FNR in z){ print >FILENAME"_random"}}' - ./*.txt
Это извлечет одинаковые номера строк из каждого файла и сохранит их в FILENAME"_random"
Вы можете создать простой файл сценария sed
для печати строк по определенным индексам, например
printf '%dp\n' $(shuf -i 1-3494 -n 100) > indexfile
, затем используйте его как
sed -nf indexfile File1
sed -nf indexfile File2
.
.
и так далее. Если у вас есть GNU sed
с -s, --separate
, вы можете выбрать одни и те же строки из нескольких файлов последовательно, используя
sed -snf indexfile File1 File2 File3
(замените File1 File2 File3
с шариком из ракушки, если хотите).
Если вам нужен однострочник, который выбирает разные случайные подмножества при каждом вызове, вы можете сделать что-то вроде
printf '%dp\n' $(shuf -i 1-3494 -n 100) | sed -snf - File1 File2 File3
perl -ls0777ne 'print for(split $\)[split $\,$r]' -- -r="$(shuf -i 0-3493 -n 100)" -- ./*.txt
r="$(shuf -i 0-3493 -n 5)" \
perl -l -0777ne 'print for(split $\)[split $\,$ENV{r}]' ./*.txt
Случайная комбинация генерируется и передается в Perl
через командную строку, что гарантирует, что все файлы получат одинаковую случайную последовательность. Каждый файл slurped
затем разделяется на newline
и выбирается за один раз с помощью конструкции @A[...]
. Обратите внимание, что поскольку индексы Perl
начинаются с нуля, команда shuf
получает 0..3494-1