조건부 및 출력 리디렉션 파일의 변수가 있는 awk

조건부 및 출력 리디렉션 파일의 변수가 있는 awk

문서에서 내가 원하는 모든 내용을 다루는 내용을 찾지 못했기 때문에 이 명령에 대한 도움을 받고 싶습니다.

전역 변수가 있으므로 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"

관련 정보