使用 awk 将 IFS 变量设置为环境变量

使用 awk 将 IFS 变量设置为环境变量

如何使用 while 循环变量和管道设置变量到 awk?

这是我当前的代码,我尝试了多种方法,但似乎找不到答案。

while IFS= read -r var
do
MyNewVariable= ($var | awk '{print $1}')

我知道我得到了正确的行,但在新的变量行上得到了错误的命令。这可能吗?

答案1

很不清楚你在这里问什么......但我会做很多事情。请修改您的问题,并牢记以下内容。

首先..阅读的部分

$var | awk '{print $1}'

要做的就是解释值“var”的内容并执行该命令,将其通过管道传输到 awk,然后打印第一个工作。由于 $var 中的内容不太可能是有效命令,因此可能会失败

您尝试的正确语法是:

command | while IFS= read -r var; do
    echo $var
done

如果您要处理命令的输出,或者:

while IFS= read -r var; do
    echo $var
done < input_file

如果您要处理文件的内容。

但实际上,包裹“while”结构是没有意义的,因为你可以轻松地这样做:

command | awk '{ print $1 }'

或者

awk '{ print $1 }' < file

如果你想设置一个变量在 awk 中使用,你可以这样做

awk -v foo=$var '{ print foo }'

您还可以在 awk 中设置 IFS

awk 'BEGIN { FS=":" } { print $1 }'

相关内容