다른 파일에 나열된 일치하는 문자열을 기반으로 텍스트 파일 열의 문자열 바꾸기

다른 파일에 나열된 일치하는 문자열을 기반으로 텍스트 파일 열의 문자열 바꾸기

이전 질문에 따르면 여러 개의 파일 세트가 있으므로 목록을 grep하고 grep file.txt를 사용하여 다른 파일을 변경하고 싶습니다. 예를 들어 여기에 세 개의 파일을 붙여넣습니다 file 1

chr - seq1 NZ_JAHWGH010000010.1 0 60562 green_a4
chr - seq3 NZ_JAHWGH010000012.1 0 466573 green_a4
chr - seq5 NZ_JAHWGH010000013.1 0 125526 green_a4
chr - seq39 NZ_CAJGBF010000006.1 0 211154 green_a4
chr - seq40 NZ_CAJGBF010000007.1 0 199119 green_a4
chr - seq41 NZ_CAJGBF010000008.1 0 190934 green_a4
chr - seq42 NZ_CAJGBF010000009.1 0 178251 green_a4

나는 간청했다

grep "NZ_JAHWGH" file.txt |awk '{print $3}' >file1.txt
grep "NZ_CAJGBF" file.txt |awk '{print $3}' >file2.txt

이제 이 grep 파일을 사용하여 seq1 seq2 등 seq 정보만 제공하는 다양한 파일을 변경하고 싶습니다. 그래서 내가 원하는 것은 file1.txt를 사용하는 것입니다. 일치하는 모든 목록을 seq1로 바꿔야 합니다. 마찬가지로 두 번째 grep 파일 file2.txt를 사용하여 일치하는 모든 패턴을 seq2로 바꾸고 싶습니다.

예를 들어 여기에 제공된 파일은 이전 파일의 정보를 사용하여 변경될 수 있습니다.

seq3 19301 20914 fill_color=green_a0
seq1 16726 18337 fill_color=green_a0
seq5 167934 169650 fill_color=green_a0
seq42 200621 202367 fill_color=red_a0
seq41 160164 161903 fill_color=green_a0
seq40 31356 33104 fill_color=green_a0

변경 사항은 다음과 같아야합니다

seq1 19301 20914 fill_color=green_a0
seq1 16726 18337 fill_color=green_a0
seq1 167934 169650 fill_color=green_a0
seq2 200621 202367 fill_color=red_a0
seq2 160164 161903 fill_color=green_a0
seq2 31356 33104 fill_color=green_a0

지금까지 나는 이 명령을 시도했습니다

for i in f2.txt; do grep -wf f1.txt $i|awk '{$1="seq1";print}'; grep -wf other.txt $i |awk '{$1="seq2";print}'; done

두 번째는

grep -wf f1.txt f2.txt|sed -e 's/seq[0-9]*/seq1/g'

도움을 주셔서 감사합니다

관련 정보