我正在收集数据,但我收集的一些数据具有如下输出。
$ 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脚本来增加这些数据吗?提前感谢您!
发布于 2018-05-28 18:14:24
最简单的是awk:
awk -F '[/-]' '{for(i=$2;i<=$3;++i) print $1"/"i }'这将在用/或-分隔的字段中拆分每一行。所以你有3个字段,字段$1是你想要保留的。字段$2是范围的开始,字段$3是范围的结束。因此,for-loop就是它所需要的,它会打印重建的版本。
发布于 2018-05-28 17:43:24
使用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发布于 2018-05-28 16:51:53
for i in {1..10}
do
echo "2001 xei_1/$i"
donehttps://stackoverflow.com/questions/50562054
复制相似问题