arrays - AWK - 如何轻松定义自定义值列表并循环遍历它?
问题描述
首先,我正在寻找一种更简单的方法,而不是在这里调试问题。
我知道,在 AWK 中,我们可以遍历如下值:
echo "hello world" |awk '{for (t=1; t<=10; t++) print t, $0}'
但是现在我需要遍历一些自定义值,例如 1、3、5、7、9、10、30、50、70、90、100、300、500、700、900。对我有用的是像这样:
echo "hello world" |awk 'BEGIN{t_values[1]=1; t_values[3]=1, t_values[5]=1, ... t_values[700]=1, t_values[900]=1} {for (t in t_values) print t, $0}'
但是,这需要大量打字并且容易出错。有没有更简单的方法来做到这一点?例如,定义一个值列表,t_values=[1, 3, 5, 7, 9, ..., 700, 900]
然后循环遍历它?
解决方案
您可以传递逗号分隔值并使用拆分:
awk -v t_values='1,3,5,7,9,700,900' 'BEGIN {
n = split(t_values, vals, /,/); for (i=1; i<=n; i++) print vals[i]}'
1
3
5
7
9
700
900
如果你想在里面定义变量,awk
那么:
awk 'BEGIN{t_values="1,3,5,7,9,700,900";
n = split(t_values, vals, /,/); for (i=1; i<=n; i++) print vals[i]}'
推荐阅读
- c# - 如何在指定目录中找到最近修改的文件 - WMI Query
- r - How do I extract out just the player names in r
- google-chrome-extension - mail.google.com 用于下载附件,而不是 Gsuite 帐户中的 mail-attachment.googleusercontent.com
- c# - 如何用 WPF 包装另一个进程
- c# - 每小时/每天/每月获取唯一用户
- c++ - 编译器在这里做了什么,允许通过很少的实际比较来比较许多值?
- google-apps-script - How to take total count of spreadsheets on my Google Sheet File
- angular - 在 Angular 中使用 Rxjs 进行基本状态管理
- excel - IFS 不适用于旧版本的 Excel
- ionic4 - 我需要在 ionic 4 pwa 应用程序中扫描二维码