내 파일에 다음과 같은 데이터 목록이 있습니다.
-0.2947990000000000
0.1722064000000000
0.1722064000000000
0.1722064000000000
0.0315420000000000
다음과 같은 출력 파일을 얻기 위해 이 데이터 시퀀스를 35번 반복하고 싶습니다.
-0.2947990000000000
0.1722064000000000
0.1722064000000000
0.1722064000000000
0.0315420000000000
.
.(x35 times)
.
-0.2947990000000000
0.1722064000000000
0.1722064000000000
0.1722064000000000
0.0315420000000000
답변1
간단한 for
루프를 사용하십시오.
for i in {1..35}; do cat input_file >> new_file; done
답변2
정확한 입력 데이터 구조(즉, 빈 줄이 없음)와 awk
이를 허용하는(즉, 읽은 마지막 줄을 END
섹션에서 사용할 수 있음) 확인하려면 다음을 시도해 보세요.
$ awk 'END {for (i=1; i=35; i++) print}' RS= file
-0.2947990000000000
0.1722064000000000
0.1722064000000000
0.1722064000000000
0.0315420000000000
.
.
.
-0.2947990000000000
0.1722064000000000
0.1722064000000000
0.1722064000000000
0.0315420000000000
편집: 또는 더 짧게,
awk 'END {for (i=35; i--;) print}' RS= file
답변3
awk에서는 파일 행을 배열에 추가하고 END 문의 중첩 루프를 통해 배열을 반복하여 이를 수행할 수 있습니다.
awk '{a[i++]=$0} END{ for(c=1;c<=35;c++) for(j=0;j<=i;j++) print a[j]}' data.txt
물론, 파일의 행 수가 매우 많으면 cat
아래와 같이 파일을 여러 번 추가하는 것이 더 적절할 것입니다.로마인의 대답
답변4
yes input_file | sed 35q | xargs cat > output_file
또는 다음과 같이 awk
:
awk 'BEGIN{while(ARGC<36)ARGV[ARGC++]=ARGV[1]}1' input_file
awk 'BEGIN{f=ARGV[1]; for(i=35;i--;){while((getline <f) > 0) print; close(f)}}' input_file