2014-03-28 61 views
0

是否可以從變量(例如i)讀取awk輸入而不是文件?Shell - Awk - 從變量中讀取

awk 'something' temp 

'temp'可以用變量$ i替換嗎?真的無法在手冊頁中找到它。

+0

適用於所有shell的備用解決方案是'echo「$ variable」| awk'something'',但Bash提供了保存管道的字符串符號。 –

回答

3

如果你的變量是一個字符串,你可以使用Bash here-string表示法。

awk 'something' <<< "$temp" 

例如:

$ temp='hello:world' 
$ awk -F':' '{print $2}' <<< "$temp" 
world 

如果變量是一個文件,那麼就做

$ cat file 
hello:world 
$ f='./file' 
$ awk -F':' '{print $1}' "$f" 
hello 
+0

我懂了。我已經讀了很多,但忘記輸入3 <<<而不是<<。沒關係,謝謝你的幫助。我將標記此線程已解決。 – SRewip

+0

@ user3456898沒問題。很高興我能幫上忙。 ':)' –

+0

還有一件事,它是<<<變量 - 完全相同 - <用於文件?如果用於awk或僅用於shell腳本,則無關緊要。 – SRewip

0

在POSIX外殼沒有下面的字符串的支持,您可以使用這裏 - doc代替:

awk 'something' <<EOF 
$i 
EOF 

awk 'something' <<< "$i"僅僅是這個文件非常短或者已經包含在變量中的上述快捷方式。