awk를 사용하여 스크립트를 실행하려고 합니다. 오류가 없는 것 같은데 원하는 파일이 생성되지 않네요. 스크립트는 다음과 같습니다.
#!/bin/bash
echo "Number of domain:"
read number
echo "Domain name:"
read domain
more "file.txt" | awk '$2=='$domain' {print $1, "1.0"} $2!='$domain' {print $1,"-1.0"}' >"$number_domain.txt"
echo "DONE"
기본적으로 문서를 만들고 $1을 모두 유지하고 $2를 변경하여 $domain이면 1.0을 쓰고 그렇지 않으면 -1.0을 쓰고 싶습니다.
"" 또는 "" 및 awk "" 및 ""로 텍스트를 작성하는 방법이 혼란스럽습니다.
답변1
행의 마지막 항목
more "file.txt" | awk '$2=='$domain' {print $1, "1.0"} $2!='$domain' {print $1,"-1.0"}' >"$number_domain.txt"
아마도
>"${number}_${domain}.txt"
스크립트가 읽은 두 변수에 해당합니다. 스크립트에서 변수가 빈 문자열이 아닌지도 확인하면 좋을 것입니다. 만약 그들이예비어 있으면 awk 스크립트에 오류가 발생합니다.
답변2
셸 변수를 사용하려면 스크립트 자체에 붙여넣기보다는 스크립트 awk
에 제공하세요 .awk
-v awkvariable="$shellvariable"
awk -v d="$domain" '$2 == d { print $1, "1.0" } $2 != d { print $1,"-1.0" }'
그러면 해당 값 이 변수 값 $domain
으로 스크립트에 "가져옵니다" .awk
d
스크립트가 올바른 작업을 수행한다면 잘 모르겠지만 나중에 리디렉션에 ${number}
대신 사용할 수도 있습니다. 스크립트에는 호출 변수가 없습니다 . 즉, .$number
number_domain
... >"${number}_$domain.txt"