문서에서 내가 원하는 모든 내용을 다루는 내용을 찾지 못했기 때문에 이 명령에 대한 도움을 받고 싶습니다.
전역 변수가 있으므로 awk에서 멀리 유지하고 싶습니다.
chr="chr10"
inpfile="exome.bed"
outfile="exons_chr.bed" -> which should be composed according to chr,
so: "exons_" $chr ".bed"
사용자가 입력한 "chr" 및 "infile"에 대해 한 줄 명령을 사용하여 다음을 기반으로 출력을 생성할 수 있도록 일반적인 형식으로 awk를 적용하고 싶습니다.
awk '$1=="$chr" $infile > "exons_"$chr".bed"
그래서 매번 출력 파일 이름도 쓰고 싶습니다. 특정 값으로 실행하면 작동합니다. 보다 일반적으로, 스크립트에서 사용할 수 있도록 변수와 함께 작동하게 하려면 어떻게 해야 합니까?
다음과 같이 더 많은 줄에서 수행할 수 있는 방법이 있습니까?
awk ' { if ($1=="$chr") -> copy lines to outfile }' infile
답변1
다양한 옵션이 있습니다...
쉘 변수를 awk에 전달하고 이를 문자열 비교에 사용하고 쉘이 파일을 생성하도록 합니다.
awk -v chr="$chr" '$1==chr' "$infile" > "exons_${chr}.bed"
또한 awk가 출력을 파일로 인쇄하도록 합니다.
awk -v chr="$chr" '$1==chr { print > "exons_" chr ".bed" }' "$infile"