2번 라인에 있는 파일 1에서 0.98728E-02 값을 가져와서 8번 라인에 있는 파일 2의 값 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
추신: 줄 앞이나 뒤에는 상수 키워드가 없습니다. PS: 출력 파일(파일 1)에 따라 2~3개의 값을 추출해야 합니다.
답변1
으로 가능하다고 확신 sed
하지만 다음을 사용하면 쉽게 할 수 있습니다 awk
.
awk 'NR==2 { value=$1 }
FILENAME=="file2" { if (FNR==8) print value; else print }
' file1 file2 > output_file
답변2
의 8행을 2 행 file2
의 내용으로 바꿉니다 .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