将awk命令存储在bash脚本的变量中

时间:2014-06-02 15:55:01

标签: awk

我正在尝试存储 awk命令(命令,而不是结果)。我的目标是稍后在脚本中使用该变量,使用不同的输入。例如:

cmd=$(awk '/something/ {if ...} {...} END {...}')
$cmd $input

我试图用$()存储命令(如示例中所示),也用backticks存储...但我无法实现它。

我感谢帮助或任何建议:)

2 个答案:

答案 0 :(得分:6)

不要这样做,使用函数而不是变量,它是存在的函数:

$ cmd() { awk -v x="$1" 'BEGIN{print x}'; }
$ cmd foo
foo
$ cmd bar
bar

另一个例子:

$ cat file1
a
b

$ cat file2
c
d
e

$ cmd() { awk '{print FILENAME, $0}' "$1"; }

$ cmd file1
file1 a
file1 b

$ cmd file2
file2 c
file2 d
file2 e

答案 1 :(得分:4)

忘记反叛和括号。您只想存储awk脚本本身

cmd='/something/ {if ...} {...} END {...}'
awk "$cmd" $input