如何替代 awk 参数?

如何替代 awk 参数?

我想简化 awk 命令以供常见使用,因此不必awk '{print "rm -r"$4 }'每次我想写时都写myawk "rm -r"$4.我试过写这样的函数

myawk() { awk '{ print $1 }' }它不起作用..

我怎样才能在Ubuntu中编写这样的函数?

答案1

要将字符串从 shell 脚本传递到嵌入式 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")"

这将被评估为awk '{print "hello"; system("echo there") }',可能会显示“hello”和“there;但如果没有正确转义,可能会发送更多恶意命令。

答案3

alias awk="awk '{print $1 }'"添加到 .bashrc 文件怎么样?

相关内容