Как печатать каждую строку файла столько раз, сколько указано в первый столбец

authorized_keys является файлом, а не каталог.

Пример файла authorized_keys:

    # Comments allowed at start of line
    ssh-rsa AAAAB3Nza...LiPk== user@example.net
    from="*.sales.example.net,!pc.sales.example.net" ssh-rsa
    AAAAB2...19Q== john@example.net

http://man.he.net/man5/authorized_keys

Также .ssh / и все файлы в нем должны принадлежать и быть доступными для чтения только пользователь, в данном случае root .

1
29.04.2019, 15:03
3 ответа

Из комментариев:

awk '{for(i=0;i<$1;i++) print}' input_file > output_file

Это зацикливает каждую строку input_file; на каждой строке зацикливает i в соответствии с первым полем и печатает текущую строку столько раз. Весь вывод затем перенаправляется в output_file.

4
27.01.2020, 23:14

С perl

$ cat ip.txt 
1 string1 
4 string2
2 string3
$ perl -ane 'print $_ x $F[0]' ip.txt 
1 string1 
4 string2
4 string2
4 string2
4 string2
2 string3
2 string3
  • -a опцией разделения входной строки на пробелы и сохранения в @F массиве
  • -n зацикливание входного файла, по умолчанию newline является разделителем строк. Не печатать входные строки
  • -e выполнить код Perl
  • print $_ x $F[0] явная печать для повторения входной строки $_ количество раз, заданное первым полем $F[0]
2
27.01.2020, 23:14
perl -pae '$_ = $_ x $F[0]' input_file

perl -nae 'print while $F[0]--' inputfile

perl -pae 's/^.*\n\K/$`/m while --$F[0]' inputfile

while IFS= read -r l; do yes "$l" | head -n "${l%%[!0-9]*}"; done < inputfile

while IFS= read -r l; do csh -c "repeat ${l%%[!0-9]*} echo '$l'"; done < inputfile

while IFS= read -r l; do
   for k in $(seq "${l%%[!0-9]*}"); do echo "$l"; done
done < inputfile
0
27.01.2020, 23:14

Теги

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