Повторите каждую строку в тексте n времена

У меня есть файл, который похож на это

888
924
873
1374
.....

Точки указывают, что у меня есть намного больше строки, приблизительно 3 000. Я хочу повторение каждая строка n время, чтобы иметь что-то вроде этого;

888
888
888
924
924
924
873
873
873
....

Я пытался написать маленький код удара:

#! bin/bash

while IFS= read -r line

do 
    awk 'NR==line'
    awk 'NR==line'
    awk 'NR==line'
done < /<PATH_TO_FILE>

Но я не получаю результатов. Я думал, что это было довольно легкой задачей, но очевидно я пропускаю что-то. Кто-либо советует?

2
задан 9 March 2015 в 04:07

3 ответа

В этом можно легко выполнить perl:

perl -ne 'print $_ x 3' file

вышеупомянутая острота произвела:

$ perl -ne 'print $_ x 3' file
888
888
888
924
924
924
873
873
873
1374
1374
1374

Просто измените демонстрационное значение для своих потребностей.

awk решение:

awk '{for (i = 1; i <= 3; i++) print $1}' file

Для фиксации сценария удара, я использовал бы следующий отрывок вместо этого:

#!/bin/bash

while read line
do
    for i in {1..3}; do echo $line; done
done < ./file
4
ответ дан 2 December 2019 в 01:37

Существует хороший прием для печати строки неоднократно:

$ printf "%0.s-" {1..10}
----------

, На основе которого, мы можем циклично выполниться через файл и печатать строку так много раз, как мы указываем в выражении фигурной скобки:

while IFS= read -r line
do
printf "%0.s$line\n" {1..3}
done < file

Тест

                          change this number as you wish
                                                       v
$ while IFS= read -r line; do printf "%0.s$line\n" {1..3}; done < a
888
888
888
924
924
924
873
873
873
1374
1374
1374

, Хотя мое предпочтение должно было бы использовать awk как это, очень похожее на то, что другие отправили прежде (хорошие ответы между прочим):

awk -v tot=3 '{for (i=1; i<=tot; i++) print}' file
2
ответ дан 19 November 2019 в 00:52

Вы можете просто сделать это через sed.

$ sed 's/\(.*\)/\1\n\1\n\1/g' file
888
888
888
924
924
924
873
873
873
1374
1374
1374
1
ответ дан 19 November 2019 в 00:52

Другие вопросы по тегам:

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