텍스트를 반복하는 방법은 무엇입니까?

텍스트를 반복하는 방법은 무엇입니까?

awk텍스트를 100번 반복하는 방법은 무엇입니까 ?

string1
string2
string3

될 것입니다:

string1
string2
string3
string1
string2
string3
string1
string2
string3...

답변1

이 질문에는 태그가 지정되어 있지만 awk다음을 사용하지 않는 간단한 솔루션을 추가하고 싶습니다 awk.

seq 100 | xargs -n1 -I{} echo "1 2 3"

반복하려는 데이터가 파일에 있는 경우 다음을 사용하세요.

seq 100 | xargs -n1 -I{} cat filename

yes또 다른 해결책은 인수를 반복하는 command 를 사용하는 것입니다 .

yes "1 2 3" | head -n100

답변2

( input반복할 텍스트가 포함된 파일)

GNU 사용 awk(그리고 입력에 NUL 바이트가 포함되어 있지 않다고 가정):

awk -v n=100 -v RS='\0' -v ORS= '{while (n--) print}' < input

가지고 다닐 수 있는:

awk -v n=100 -v ORS= '
  {all = all $0 RS}
  END {while (n--) print all}' < input

(입력이 개행 문자로 끝나지 않으면 개행 문자가 추가됩니다.)

다음을 수행할 수도 있습니다.

set --
n=100; while [ "$n" -gt 0 ]; do
  set -- "$@" input
  n=$((n - 1))
done
cat "$@"

input이는 포함된 바이트에 관계없이 작동합니다. 그러나 의 값이 더 크고 쉘 에 명령이 내장되어 n있지 않으면 명령 인수 크기에 대한 시스템 제한(여기 )에 도달할 수 있습니다.catcat

또는 최신 버전을 사용하면 zsh고정 텍스트에 대해 다음을 수행할 수 있습니다.bashksh93yash -o braceexpand

printf '%.0sstring1\nstring2\nstring3\n' {1..100}

그리고 zsh:

repeat 100 print -l string{1..3}

뻔뻔하게 말하면 seqGNU가 설치된 시스템에서는 다음과 같이 할 수도 있습니다.

seq -f 'string1
string2
string%.0g' 3.0001 0.0001 3.0100

답변3

그리고 awk:

echo "t1 t2 t3" | awk '{l=$0; for(i=1;i++<100;) l=l" "$0} END{print l}'

그리고 perl:

echo "t1 t2 t3" | perl -ne 'chomp;print "$_ " x 100;'

답변4

에서는 /bin/bash파일 레코드의 세 값을 n번 연속으로 인쇄할 수 있도록 인쇄 레코드를 매개변수화할 수 있습니다. 연속적일 필요는 없습니다.

입력 파일에서 레코드 2, 3, 6을 인쇄한다고 가정합니다.inputfile

$ cat inputfile
A
B
C
D
E
F
$ awk -v RS='\n' '{if(NR=="2"||NR=="3"||NR=="6") a[NR]=$0} \
END{for(i=1;i++<=100;) {print a[2]"\n"a[3]"\n"a[6];}}' inputfile

틀림없이 이는 호출되는 배열 때문에 비용이 조금 더 듭니다.

관련 정보