gpt4 book ai didi

bash - 在 awk 中返回两个变量

转载 作者:行者123 更新时间:2023-11-29 09:01:41 24 4
gpt4 key购买 nike

目前我正在做的事情

ret=$(ls -la | awk '{print $3 " "  $9}')
usr=$(echo $ret | awk '{print $1}')
fil=$(echo $ret | awk '{print $2}')

问题是我没有运行 ls 我正在运行一个需要时间的命令,所以你可以理解逻辑。

有没有办法设置返回值来设置两个外部值,比如

ls -la | awk -r usr=x -r fil=y '{x=$3; y=$9}'

这样命令将运行一次,我可以将它最小化到一行

最佳答案

它不是很漂亮,但如果你真的需要在一行中做这件事,你可以使用 awk/bash 的高级元编程能力:)

eval $(ls -la | awk '{usr = $3 " " usr;fil = $9 " " fil} END{print "usr=\""usr"\";fil=\""fil"\""}')

打印:

echo -e $usr
echo -e $fil

就个人而言,我会坚持使用您所拥有的 - 与上述相比,它更具可读性并且性能开销很小:

$time <three line approach>

real 0m0.017s
user 0m0.006s
sys 0m0.011s

$time <one line approach>
real 0m0.009s
user 0m0.004s
sys 0m0.007s

关于bash - 在 awk 中返回两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9001668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com