,,,,region2b 등과 .txt
같은 다른 항목이 있는 파일이 있습니다.region1a
region1b
region2a
열과 행 값이 다른 Excel 파일이 있습니다. 텍스트 파일의 내용을 특정 행 및 열 값으로 바꾸고 region1
, 다른 열 및 행 값으로 바꾸고 싶습니다 region2
.
어떻게 진행해야 할지 모르겠습니다. 도와 주셔서 감사합니다.
샘플 Excel 파일은 다음과 같습니다.
텍스트 파일은 다음과 같습니다
p1 (region1a region1b -0.1); p2 (region1a region1b 5); p1 (region2a region2b -0.1); p2 (region2a region2b 5);
예상 출력
p1 (-0.01703 0.08515 -0.1); p2 (-0.01703 0.08515 5); p1 (0.02297 0.08515 -0.1); p2 (0.02297 0.08515 5);
답변1
이 csv( input.csv
) 에서 시작하세요.
no,a,b
region1,-0.01703,0.08515
region2,0.02297,0.08515
out.tsv
이 TSV( ) 로 변환할 수 있습니다.
region1a -0.01703
region1b 0.08515
region2a 0.02297
region2b 0.08515
밀러 사용(https://github.com/johnkerl/miller) 그리고 실행
mlr --c2t reshape -i a,b -o item,value then put '$field=$no.$item' then cut -o -f field,value ./input.csv | tail -n +2 >./out.tsv
두 번째 파일은 ( input.txt
) 입니다.
p1 (region1a region1b -0.1);
p2 (region1a region1b 5);
p1 (region2a region2b -0.1);
p2 (region2a region2b 5);
그런 다음 bash 스크립트에서 for 루프를 간단히 실행할 수 있습니다
#!/bin/bash
set -x
cp ./input.txt ./output.txt
while IFS=$'\t' read -r region value; do
sed -i -r 's/'"$region"'/'"$value"'/g' ./output.txt
done <./out.tsv
될거야output.txt
p1 (-0.01703 0.08515 -0.1);
p2 (-0.01703 0.08515 5);
p1 (0.02297 0.08515 -0.1);
p2 (0.02297 0.08515 5);