이전 질문에 따르면 여러 개의 파일 세트가 있으므로 목록을 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'
도움을 주셔서 감사합니다