2013-10-29 159 views
1

我有一个AWK命令,我想在bash脚本中使用它。我想给AWK一个大的文本文件作为变量。将变量传递给AWK命令

我曾尝试:

  1. cat $var | awk 'regex'
  2. echo $var | awk 'regex'
  3. awk 'regex' <<< $var

所有这三种形式不起作用。当我尝试这些命令在shell awk 'regex' file它的作品。 如何将一个变量作为输入传递给AWK命令,我不想将文件传递给AWK。这可能与否。

+0

Barmar和Abybhava是对的。 如果您对问题和预期输出给予更多的明确性,我们可以进一步帮助您 – Ashish

+0

“我想给AWK一个大文本文件作为变量”...... var包含什么?文件名或文件数据? – anishsane

回答

0

你非常接近,这也应该工作:

awk 'regex' <<< "$var" 
0

您需要引用变量,以防止新行被转换为空格:

echo "$var" | awk 'regex' 
0

试试这个:

$ awk -v awkvar="$var" 'BEGIN{if (awkvar ~ "foobar"){print var}}' 
foobar 
+0

在原始脚本中的正则表达式匹配在哪里? – Barmar

+0

已修复,现在使用正则表达式 –

+0

这将把变量视为一行,而不是逐行处理。 – Barmar