한 파일의 특정 값을 다른 텍스트 파일의 값으로 업데이트

한 파일의 특정 값을 다른 텍스트 파일의 값으로 업데이트

ASCII 형식의 텍스트 파일이 있는데 특정 값을 다른 텍스트 파일에 저장된 값으로 바꾸고 싶습니다.

text_1. . . . 50.asc5개 열, 4개 행이라는 이름의 파일을 생각해 보세요.

파일의 샘플 데이터

 0.40007 0.544 0.6795 0.1545 -3.4028
 0.61488 0.8471 0.7444 0.3537 0.0709
 0.65128 0.6651 0.7948 0.9200 0.893
 0.70952 0.5990 0.5061 0.610 0.893

각 파일의 (열 5, 행 1)을 Replacing_values.txt.

데이터가 있어요

1
2
3
4
.
.
.
50

예상 결과(모든 파일 계속)

 0.40007 0.544 0.6795 0.1545  1
 0.61488 0.8471 0.7444 0.3537 0.0709
 0.65128 0.6651 0.7948 0.9200 0.893
 0.70952 0.5990 0.5061 0.610 0.893

나는 이것을 시도했다

for i in `seq 50`; do x=`awk 'FNR==(1) {print $5}' *.asc`; y=`cat Replacing_values.txt`; echo $x==$y ;done

답변1

유연한 GNU 사용awk특징:

gawk -i inplace -v repl="Replacing_values.txt" 'FNR==1{ getline $5 < repl }1' *.asc
  • -i inplace- 입력 파일의 내부 수정 허용
  • -v repl="Replacing_values.txt"- 대체 값으로 파일 이름을 보유하는 변수
  • FNR==1- 각 입력 파일의 첫 번째 줄만 고려됩니다.
  • getline $5 < repl- repl파일에서 다음 레코드를 읽고 다섯 번째 열에 할당$5

관련 정보