파일에서 값을 추출하고 해당 값을 다른 파일의 특정 줄에 배치합니다.

파일에서 값을 추출하고 해당 값을 다른 파일의 특정 줄에 배치합니다.

파일 1의 2행에서 0.98728E-02 값을 가져와서 파일 2의 8행에서 값 1,000을 입력하고 싶습니다. 파일 2를 파일 1로 바꾸는 방법은 무엇입니까?

내 파일 1:

Genetic variance(s) for effect  2       
0.98728E-02
Genetic variance(s) for effect  3       
0.56818E-02

"0.98728E-02" 값을 가져와서 파일 2의 "1.0000" 대신 줄에 넣어야 합니다.

내 파일 2:

DATAFILE 
renf90.dat 
NUMBER_OF_TRAITS 
1 
NUMBER_OF_EFFECTS 
9 
RANDOM_RESIDUAL VALUES 
1.0000
RANDOM_GROUP 
2

"sed" 언어로 시작했는데 어떻게 해야할지 모르겠습니다...

sed '23s/1.0000/  .....

내가 원하는 최종 파일.

DATAFILE 
renf90.dat 
NUMBER_OF_TRAITS 
1 
NUMBER_OF_EFFECTS 
9 
RANDOM_RESIDUAL VALUES 
0.98728E-02
RANDOM_GROUP 
2

추신: 줄 앞이나 뒤에는 상수 키워드가 없습니다. 추신: 출력 파일(파일 1)에 따라 두 개 또는 세 개의 값을 추출해야 합니다.

답변1

작동한다고 확신 sed하지만 다음을 쉽게 사용할 수 있습니다 awk.

awk 'NR==2 { value=$1 }
     FILENAME=="file2" { if (FNR==8) print value; else print }
' file1 file2 > output_file

답변2

file28행을 2행의 내용 으로 바꿉니다 file1.sed

이렇게 바뀐 file2

sed -i'' '8s/.*/'"$(sed -n '2p' file1)"'/' file2

또는 위와 동일하지만 변경 사항을file2.new

sed '8s/.*/'"$(sed -n '2p' file1)"'/' file2 > file2.new

답변3

i=`sed -n '2p' file1`

sed  "8s/1.0000/$i/g" file2

산출

DATAFILE 
renf90.dat 
NUMBER_OF_TRAITS 
1 
NUMBER_OF_EFFECTS 
9 
RANDOM_RESIDUAL VALUES 
0.98728E-02
RANDOM_GROUP 
2

참고: 출력을 원하면 file2에 있어야 합니다.

sed -i   "8s/1.0000/$i/g" file2

관련 정보