파일 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
file2
8행을 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