【问题标题】:AWK - How to easily define a customized list of values and loop through it?AWK - 如何轻松定义自定义值列表并循环遍历它?
【发布时间】:2020-12-10 05:45:01
【问题描述】:

首先,我正在寻找一种更简单的方法,而不是在这里调试问题。

我知道,在 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] 这样的值列表,然后循环遍历它?

【问题讨论】:

    标签: arrays loops for-loop awk


    【解决方案1】:

    您可以传递逗号分隔值并使用拆分:

    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]}'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      相关资源
      最近更新 更多