awk 初学者关于将一些命令放入 abc.awk 等程序文件中的问题
我需要写这个来计算 NR= 0-500, 500-1000,1000-1500 等之间的行,直到最后,并且从 1 开始。
awk "{NR<=500 && "/^1/" && sum+=1}; END {print sum}" 1.txt
awk "{NR>500 && NR<=1000 && "/^1/" && sum+=1}; END {print sum}" 1.txt
awk "{NR>1000 && NR<=1500 && "/^1/" && sum+=1}; END {print sum}" 1.txt
.....
这是我的问题,我如何将它们放入文件中(* .awk)同时运行..
i need to write this for counting lines between NR= 0-500, 500-1000,1000-1500 etc. till the end, and which start with 1.
awk "{NR<=500 && "/^1/" && sum+=1}; END {print sum}" 1.txt
awk "{NR>500 && NR<=1000 && "/^1/" && sum+=1}; END {print sum}" 1.txt
awk "{NR>1000 && NR<=1500 && "/^1/" && sum+=1}; END {print sum}" 1.txt
.....
here is my question, how can i put these in to a file(*.awk) to run at the same time..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以尝试将这些命令放入一个文件中,例如 myscript.awk,
然后在命令行上运行,
您不需要在同一个文件上调用 awk 3 次!这是低效编码的一个例子。
仅当您想像
./myscript.awk
那样运行脚本时,才可以在脚本的第一行中使用 shebang#!/usr/bin/awk -f
,否则,你可以忽略它you can try put these commands in a file eg myscript.awk
then run on command line
you do not need to call awk on the same file 3 times! Its an example of inefficient coding.
you can out a shebang
#!/usr/bin/awk -f
in the first line of your script only if you want to run it like./myscript.awk
, otherwise , you can leave it out如果您希望脚本是纯 awk,则需要带有 -f 的 shebang 行。将此行设为文件之一:(
或根据要使用的 awk 的位置进行调整)
该方法的一大缺点是您必须在脚本中硬编码 awk 的路径。该问题的典型解决方案(使用 /usr/bin/env)不适用于 awk 或 sed,因为它们需要 shebang 中的 -f。如果您只想在 awk 周围使用 shell 脚本包装器,您可以执行以下操作:
If you want the script to be pure awk, you need a shebang line with a -f. Make this line one of the file:
(or adjust according to the location of the awk you want to use)
One big drawback of that approach is that you must hard code the path of awk in the script. The typical solution to that problem (to use /usr/bin/env) does not work with awk or sed, because they require the -f in the shebang. If you just want to use a shell script wrapper around your awk, you can do something like:
未经测试,但这应该替换所有这些重复的行:
Untested, but this should replace all those duplicated lines: