답변:
펄 :
perl -ne 'for$i(0..3){print}' file
그리고 @derobert 의 코멘트 로 게시 된이 것을 추가해야합니다 .
perl -ne 'print "$_" x4'awk 및 변형 :
awk '{for(i=0;i<4;i++)print}' filebash
while read line; do for i in {1..4}; do echo "$line"; done; done < fileperl -ne 'print(($_)x4)'. 또한 $linebash 버전에서 (반향으로) 인용해야합니다 .
이것이 골프 경기 로 바뀌고 있는지 궁금합니다 .
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 $_;
}
1awk에서 정확히 무엇을 합니까? 속기 print $0?
1(true)입니다. 기본 블록은 {print}입니다. 따라서이 명령문 1은 현재 라인 버퍼 ( {print}) 를 인쇄하는 것을 의미합니다 . ( {print}와 {print $0}거의 동일하다, qed.)
sed세미콜론을 명령 종료 자로 지원하지 않는 것을 들어 본 적이 없다 . 정말 그런 것이 있습니까?
당신은 필요없이이 작업을 수행 할 수 있습니다 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 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
--help를 선택하는 대신 문자열로 간주하는 방법을 알고 있습니까? [어디에 경우를 생각해 line이다 --help또는 다른 옵션]
yes -- --help
yes및 head이 "순수 쉘"되지 않은 수단
awk의for반복 단 하나의 명령이있는 경우 괄호를 필요로하지. 그리고perl당신이 사용하는 경우 간단foreach루프 :for$i(0..3){print}.