如何增加此代码?

时间:2018-05-28 08:25:22

标签: 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脚本增加这些数据吗?提前谢谢!!!

3 个答案:

答案 0 :(得分:2)

使用awk你可以做这个转变:

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

答案 1 :(得分:2)

最简单的是awk

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

这会在由/-分隔的字段中拆分每一行。因此,您有3个字段,字段$1是您要保留的字段。字段$2是范围的开头,字段$3是结尾。所以只需要for - 循环就可以打印重建版本。

答案 2 :(得分:-2)

for i in {1..10}
do
  echo "2001 xei_1/$i"
done