我正在收集数据,但我收集的一些数据有这样的输出..
$ 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脚本增加这些数据吗?提前谢谢!!!
答案 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