Bash 如何增加此代码?

Bash 如何增加此代码?,bash,Bash,我正在收集数据,但我收集的一些数据有如下输出 $ 2001 xei_1/2-10 $ 2002 xei_2/3-7 应该是这样的 $ 2001 xei_1/2 $ 2001 xei_1/3 $ 2001 xei_1/4 $ 2001 xei_1/5 $ 2001 xei_1/6 $ 2001 xei_1/7 $ 2001 xei_1/8 $ 2001 xei_1/9 $ 2001 xei_1/10 您能帮助我如何使用bash脚本增加这些数据吗?提前谢谢你 使用awk,您可以进行以下转换

我正在收集数据,但我收集的一些数据有如下输出

$ 2001 xei_1/2-10 
$ 2002 xei_2/3-7 
应该是这样的

$ 2001 xei_1/2
$ 2001 xei_1/3 
$ 2001 xei_1/4
$ 2001 xei_1/5
$ 2001 xei_1/6
$ 2001 xei_1/7
$ 2001 xei_1/8
$ 2001 xei_1/9
$ 2001 xei_1/10

您能帮助我如何使用bash脚本增加这些数据吗?提前谢谢你

使用awk,您可以进行以下转换:

for i in {1..10}
do
  echo "2001 xei_1/$i"
done
cat file
$ 2001 xei_1/2-10 
$ 2002 xei_2/3-7 

awk -F'[/-]' '{for (i=$(NF-1);i<=$NF;i++){a=$0;gsub(/\/.*/,"/"i,a);print a}}' file
$ 2001 xei_1/2
$ 2001 xei_1/3
$ 2001 xei_1/4
$ 2001 xei_1/5
$ 2001 xei_1/6
$ 2001 xei_1/7
$ 2001 xei_1/8
$ 2001 xei_1/9
$ 2001 xei_1/10
$ 2002 xei_2/3
$ 2002 xei_2/4
$ 2002 xei_2/5
$ 2002 xei_2/6
$ 2002 xei_2/7
cat文件
$2001 xei_1/2-10
$2002 xei_2/3-7

awk-F'[-]'{for(i=$(NF-1);i最简单的是
awk

awk -F '[/-]' '{for(i=$2;i<=$3;++i) print $1"/"i }'

awk-F'[/-]'{for(i=$2;我到目前为止你尝试过什么?你是否需要像显示的那样“生成”数据?或者你想修改你正在收集的数据?你的问题不清楚,我想我想修改我收集的数据。到目前为止,我有这个代码要求不清楚。为什么两个
8
s?为什么
1,4
缺失?这里OP想要一个范围
2-10
。范围似乎与原始文件名相关(即,如果文件名为
2002 xei_2/3-7
,范围将从3到7)是的,这很好。我使用了NF和split,以防斜杠或减号出现在第一个字段中,但对于简单的输入,这更清晰。@user000001啊,是的,我无法理解这种推理。如果您能将其添加到您的解决方案中,这将是一个好主意。这是一个很大的帮助!非常感谢!