大佬教程收集整理的这篇文章主要介绍了将 awk 变量导出到 bash 变量?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将我在使用 awk 处理文本文件时计算的一些值保存到 bash 变量中。例如,如果我的 file.txt 有以下内容
@R_551_10586@l 16
dr-xr-xr-x 18 root root 257 Mar 26 16:24 .
dr-xr-xr-x 18 root root 257 Mar 26 16:24 ..
-rw-r--r-- 1 root root 0 Mar 24 22:23 .autorelabel
lrwxrwxrwx 1 root root 7 Mar 18 08:15 bin -> usr/bin
dr-xr-xr-x 4 root root 4096 May 20 17:05 boot
drwxr-xr-x 14 root root 2860 Apr 17 03:09 dev
drwxr-xr-x 95 root root 8192 May 20 17:05 etc
如果我想计算第五列的总和和隐藏文件的数量,我会这样做
awk 'NR>1 {sum+=$5; if(substr($9,1,1)=="."){Count+=1}} END{print "The disk space is " sum " and the number of hIDden files is " count}' file.txt
输出
磁盘空间为15669,隐藏文件数为3
我想要做的是保存变量 sum 和 count 供以后在我的脚本中使用,而不必再次进行每次计算,例如像 {{ 1}}
我知道您可以使用 -v 选项将 bash 变量传递给 awk,但我想做相反的事情,例如 awk 中的“{export SUM=sum}”。
您可以从进程替换的输出中read
:
read sum count < <(
awk '
NR > 1 {sum += $5; if (substr($9,1,1) == ".") count++}
END {print sum,count}
' file.txt
)
,
关于 I know you can pass bash variables to awk using the -v option
- 不完全是。您可以使用 -v
将 awk 变量 初始化为包含 bash 变量的 value 的字符串,但 awk 未访问 bash 变量,bash 正在访问bash 变量在调用 awk 之前填充 -v...
部分。 bash 无法访问 awk 变量 - 如果您想根据 awk 变量的值设置一些 bash 变量,那么您需要从 awk 打印这些 awk 变量的值并在 bash 中读取这些值,例如将所有 awk 输出值读入 bash 数组:
$ awk 'BEGIN{foo=7; bar="stuff"; print foo; print bar}'
7
stuff
$ out=( $(awk 'BEGIN{foo=7; bar="stuff"; print foo; print bar}') )
$ echo "${out[0]}"
7
$ echo "${out[1]}"
stuff
以上是大佬教程为你收集整理的将 awk 变量导出到 bash 变量?全部内容,希望文章能够帮你解决将 awk 变量导出到 bash 变量?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。