bash - 将 awk 的输出保存到两个不同的变量

标签 bash shell variables awk

好的。我有点迷路,谷歌搜索对我帮助不大。 我有这样的命令:

filesize_filename=$(echo $line | awk ' ''{print $5":"$9}') 
echo $filesize_filename 
1024:/home/test

现在这个将两个返回或 awk 的项目保存到一个变量中。我想实现这样的目标:

filesize,filename=$(echo $line | awk ' ''{print $5":"$9}')

这样我就可以单独访问它们了

echo $filesize
1024

echo $filename
/home/test

我该如何实现?

谢谢。

最佳答案

用 awk 输出填充一个 shell 数组,然后用它做任何你喜欢的事:

$ fileInfo=( $(echo "foo 1024 bar /home/test" | awk '{print $2, $4}') )
$ echo "${fileInfo[0]}"
1024
$ echo "${fileInfo[1]}"
/home/test

如果文件名可以包含空格,那么你必须适本地调整 awk 中的 FS 和 OFS 以及 shell 中的 IFS。

当然你可能根本不需要 awk:

$ line="foo 1024 bar /home/test"
$ fileInfo=( $line )
$ echo "${fileInfo[1]}"
1024
$ echo "${fileInfo[3]}"
/home/test

但要注意在最后一种情况下 $line 中匹配本地文件名的通配字符。我希望有一种更强大的方法来从 shell 变量填充 shell 数组,但我想不出它。

关于bash - 将 awk 的输出保存到两个不同的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30917997/

相关文章:

windows - 将软件作为独占 Shell 应用程序运行?

linux - Ubuntu 16.04 上的 Amazon CLI bash 脚本,if 语句上的 "unexpected operator"(语法看起来正确)

c - 请解释一下这背后的概念,(c 编程中的 ptr 和 *ptr)之间的区别

bash - Git bash | bash : sudo: command not found (and others)

bash - 运行 bash 函数

linux - 在不使用子 shell 的情况下调用带参数的函数 - bash

linux - 命令运行时如何简化输出文件

linux - 我无法从 'script2.sh' 运行 'script1.sh'(它们在同一文件夹中并具有 755 权限)

xslt - 如何在 xslt 中设置标志/变量以再次输入(与转换为 Junit 格式有关)

php - 使用 PDO 从 MAX 查询设置变量