2013-10-29 158 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