2014-03-28 57 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"仅仅是这个文件非常短或者已经包含在变量中的上述快捷方式。