gpt4 book ai didi

linux - 使用 awk 打印由 "-"分隔的变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:40 24 4
gpt4 key购买 nike

我正在尝试打印由“-”分隔的两个值之间的所有数字。我有一个包含多行的文档,如下所示:

14 - 19 |
45 - 50 |

我想要这样的结果:

14 15 16 17 18 19  
45 46 47 48 49 50

但是我一直在同一行中获取所有值,尽管我已经设置了 ORS 和 OFS。

有什么我可能遗漏的吗?

#!/bin/bash
awk ' BEGIN{OFS=" ";
RS="|";
FS=" ";
ORS=" "};
{
for (i=1; i<=NF ; i++)
{
if ($i == "-")
{
st=$(i-1);
en=$(i+1);
st++;
while (st < en)
{
print st;
st++;
}
}
else
print $i;
}
}' list.txt

最佳答案

如果字段是固定的,这样就简单直接多了:

$ awk '{for (i=$1+0;i<=$(NF-1);i++){printf "%d ", i};print ""}' list.txt
14 15 16 17 18 19
45 46 47 48 49 50

为了防止尾随空格(感谢@fedorqui):

awk '{for (i=$1+0;i<$3+0;i++){printf "%d ", i};print ""$3}' list.txt

关于linux - 使用 awk 打印由 "-"分隔的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38242330/

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