파일의 각 줄을 정해진 횟수만큼 반복하고 싶습니다.
예를 들어 각 줄을 네 번 반복하십시오.
a
b
c
된다 :
a
a
a
a
b
b
b
b
c
c
c
c
나는 약간의 검색을했고, 역행의 선을 따라 많은 질문과 답변이 있습니다.
C에서는이 작업을 수행하는 것이 쉽지만 기본 명령에 대해 더 많이 알고 있기 때문에 항상 이러한 종류의 일회용 던지기에 의존하지 않아도됩니다.
답변
-
펄 :
perl -ne 'for$i(0..3){print}' file
그리고 @derobert 의 코멘트 로 게시 된이 것을 추가해야합니다 .
perl -ne 'print "$_" x4'
-
awk
및 변형 :awk '{for(i=0;i<4;i++)print}' file
-
bash
while read line; do for i in {1..4}; do echo "$line"; done; done < file
답변
이것이 골프 경기 로 바뀌고 있는지 궁금합니다 .
sed 'p;p;p'
awk '1;1;1;1'
perl -lpE 'say;say;say' # if Paul McCartney and Michael Jackson were hackers...
설명:
sed의 p
명령은 현재 행을 인쇄하는 것입니다. 기본 동작은 다음 줄로 이동하기 직전에 현재 줄을 인쇄하는 것입니다.-n
에서 끌 수 있도록해야합니다). 일부 오래된 sed에는 세미콜론이 없으므로 (제 생각에) 할 수 있습니다.sed -e p -e p -e p
Awk는 condition {action}
쌍으로 . 조치가 생략 된 경우 조건이 true를 리턴하면 기본값은 현재 행을 인쇄하는 것입니다. 많은 C와 같은 언어와 마찬가지로 Awk는 1
사실로 취급 됩니다. 완전성을 위해 조건이 생략되면 각 레코드에 대해 조치가 실행됩니다.
많은 perl 함수는 “default”변수를 이용합니다. 이 하나의 라이너는 (perl 5.16에서) 다음과 같습니다.
$ perl -MO=Deparse -lpE 'say;say;say'
BEGIN { $/ = "\n"; $\ = "\n"; }
use feature 'current_sub', 'evalbytes', 'fc', 'say', 'state', 'switch', 'unicode_strings', 'unicode_eval';
LINE: while (defined($_ = <ARGV>)) {
chomp $_;
say $_;
say $_;
say $_;
}
continue {
die "-p destination: $!\n" unless print $_;
}
답변
sed -n '{p;p;p;p;}' file
awk '{print;print;print;print;}' file
답변
당신은 필요없이이 작업을 수행 할 수 있습니다 sed
, perl
또는 awk
.
$ for i in `cat <file>` ; do seq <#> <#> | xargs -i -- echo $i ; done
또는 while 루프를 사용하십시오.
$ while read i ; do seq <#> <#> | xargs -i -- echo $i ; done < <file>
예
for 루프
$ for i in `cat sample.txt` ; do seq 1 3 | xargs -i -- echo $i ; done
a
a
a
b
b
b
c
c
c
while 루프
$ while read i; do seq 1 2| xargs -i -- echo $i;done < sample.txt
a
a
b
b
c
c
답변
순전히 쉘 사용 :
repeats=4
while read line; do yes $line|head --lines=$repeats; done < infile > outfile
답변
이것은 당신을 위해 일할 수 있습니다 (GNU sed) :
sed 'h;:a;s/[^\n]\+/&/4;t;G;ba' file
각 줄을 4 번 반복합니다.
또는 원하는 경우 :
sed 'h;:a;s/\n/&/3;t;G;ba' file
각 줄을 3 번 더 반복합니다.
답변
@potong의 답변은 빈 줄과 함께 작동하지 않으므로 다음 \+
과 같이 *
바꿔야합니다.
sed 'h;:a;s/[^\n]*/&/4;t;G;ba' file