동일한 파일/열에 중복된 데이터 목록이 있습니다.

동일한 파일/열에 중복된 데이터 목록이 있습니다.

내 파일에 다음과 같은 데이터 목록이 있습니다.

-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

관련 정보