답변:
펄 :
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
perl -ne 'print(($_)x4)'
. 또한 $line
bash 버전에서 (반향으로) 인용해야합니다 .
이것이 골프 경기 로 바뀌고 있는지 궁금합니다 .
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 $_;
}
1
awk에서 정확히 무엇을 합니까? 속기 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}
.