为什么在 "echo" 和变量中使用 awk 命令时无法得到类似的结果
Why I can't get similar result when using awk command in "echo" and variable
我在变量中有一些静态数据,如 table,它有列,行有分隔符,如“|”它们之间。
示例:
Number of row | Name column 1 | Name column 2 | Name column 3
1 | var of col 1 | var of col 2 | var of col 3
...
我想使用 awk 命令从我的变量中获取指定行:
var="$staticData" | awk '=="1" {print}'
当我尝试通过“echo”打印出来时,我得到的结果是空的,但是当我使用:
echo "$staticData" | awk '=="1" {print}'
我的结果正常。
当你运行
var="$staticData" | awk '=="1" {print}'
您正在声明一个变量并将 awk 的结果重定向到标准输出。变量被存储,输出为空,因为变量只是声明的,你没有对它做任何事情。
当你运行
$ staticData='1|2|3|4|5'
$ var="$staticData" | awk '=="1" {print}'
$ echo $var
$
它是空的,因为它必须是。标准输出中没有任何内容
当你运行
$ staticData='1|2|3|4|5'
$ echo $staticData | awk -F '|' '{print }'
1
在我的例子中,我将 echo 的输出重定向到 awk 命令。您需要了解重定向和标准输出(标准输出)在您正在做的事情的上下文中意味着什么。
我在变量中有一些静态数据,如 table,它有列,行有分隔符,如“|”它们之间。 示例:
Number of row | Name column 1 | Name column 2 | Name column 3
1 | var of col 1 | var of col 2 | var of col 3
...
我想使用 awk 命令从我的变量中获取指定行:
var="$staticData" | awk '=="1" {print}'
当我尝试通过“echo”打印出来时,我得到的结果是空的,但是当我使用:
echo "$staticData" | awk '=="1" {print}'
我的结果正常。
当你运行
var="$staticData" | awk '=="1" {print}'
您正在声明一个变量并将 awk 的结果重定向到标准输出。变量被存储,输出为空,因为变量只是声明的,你没有对它做任何事情。
当你运行
$ staticData='1|2|3|4|5'
$ var="$staticData" | awk '=="1" {print}'
$ echo $var
$
它是空的,因为它必须是。标准输出中没有任何内容
当你运行
$ staticData='1|2|3|4|5'
$ echo $staticData | awk -F '|' '{print }'
1
在我的例子中,我将 echo 的输出重定向到 awk 命令。您需要了解重定向和标准输出(标准输出)在您正在做的事情的上下文中意味着什么。