shell 脚本问题

发布于 2022-09-03 14:26:20 字数 771 浏览 9 评论 0

在awk如何使用$变量。

例如:
for i in seq 1 10;do

SUM=`awk -F: 'BEGIN {sum=0} NR==$i { sum+=$3+$4+$5 }END{ print sum }' test`
echo $SUM

done

test 文件内容:
ke Harrington:(510) 548-1278:250:100:175
Christian Dobbins:(408) 538-2358:155:90:201
Susan Dalsass:(206) 654-6279:250:60:50
Archie McNichol:(206) 548-1348:250:100:175
Jody Savage:(206) 548-1278:15:188:150
Guy Quigley:(916) 343-6410:250:100:175
Dan Savage:(406) 298-7744:450:300:275
Nancy McNeil:(206) 548-1278:250:80:75
John Goldenrod:(916) 348-4278:250:100:175
Chet Main:(510) 548-5258:50:95:135
Tom Savage:(408) 926-3456:250:168:200
Elizabeth Stachelin:(916) 440-1763:175:75:300

但是awk中$变量是指文件中的列,而无法实现$i.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

氛圍 2022-09-10 14:26:21

awk是不能直接使用shell变量的,提供了-v选项将shell变量传递给awk,使用方法类似如下:

i=1;awk -v nvar="$i" 'BEGIN{print nvar}'

另外如果要处理文本中前十行或者指定几行,awk即可独立完成:

awk -F: 'NR<=10{sum=$3+$4+$5;print sum}' test

awk -F: 'NR==1,NR==10{sum=$3+$4+$5;print sum}' test
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文