Bash 함수에 인수를 전달하여 awk 모드로 작동하는 방법을 알고 싶습니다. 동일한 질문에 대답하는 경향이 있는 여러 Q&A를 읽었지만 뭔가 빠졌습니다.
나는 다음 한 줄의 코드를 사용하여 Arch Linux를 사용하여 패키지(이 경우 vivaldi)를 찾습니다 packman
.
pacman -Sl | awk '$2~ /^vivaldi/{print $2, $3, $4, "[" $1 "]"}' | sort
다음 함수를 작성했지만 실행하면 출력이 생성되지 않습니다.
function pacname() {
#pattern="$1"
pacman -Sl | awk -v pattern="$1" '$2~ /^"pattern"/{print $2, $3, $4, "[" $1 "]"}' | sort
}
답변1
/.../
Awk의 정규식 에서는 변수가 확장되지 않습니다 . 대신 문자열 형식을 사용하여 "^"pattern
앵커 연산자를 변수 패턴 값과 연결할 수 있습니다.
전임자.
echo 'baz foobar' | awk -v pattern="foo" '$2 ~ "^"pattern {print $1}'
baz