awk 매개변수를 바꾸는 방법은 무엇입니까?

awk 매개변수를 바꾸는 방법은 무엇입니까?

나는 일반적인 사용을 위해 awk 명령을 단순화하고 싶기 때문에 이와 같은 함수를 작성 awk '{print "rm -r"$4 }'하려고 할 때마다 작성할 필요가 없습니다.myawk "rm -r"$4

myawk() { awk '{ print $1 }' }작동하지 않습니다..

Ubuntu에서 이러한 함수를 어떻게 작성할 수 있습니까?

答え1

쉘 스크립트에서 내장된 awk 스크립트로 문자열을 전달하려면 awk 변수 및 매개변수를 사용하십시오 -v.

myawk () {
  awk -v mystring="$1" '{ print mystring }'
}

또 다른 가능성은 문자열을 환경 변수에 넣고 배열을 통해 액세스하는 것입니다 ENVIRON.

答え2

작은따옴표 대신 큰따옴표를 사용해 보세요. http://www.gnu.org/s/bash/manual/html_node/Double-Quotes.html

아니면 다음과 같이 작성하세요:

myawk () { awk '{print '"$1"' }'; }

하지만 원래 사용자 문자열을 포함하려고 하면 많은 부작용이 발생할 수 있다는 것을 알 수 있습니다. 예를 들어:

myawk '"hello"; system("echo there")"

이는 "hello"로 평가되며 awk '{print "hello"; system("echo there") }'"There"가 표시될 수 있지만 올바르게 이스케이프되지 않으면 더 많은 악성 명령이 전송될 수 있습니다.

答え3

alias awk="awk '{print $1 }'".bashrc 파일에 추가하는 것은 어떻습니까?

関連情報