如何grep一个序列并创建一个不同的文件?

How to grep a sequence and create a different file?

我有一个之前计算的输出 (geom_dist_output) 文件,其中包含 "Modo: 1"、"Modo: 2"、"Modo: 3" 到 "Modo: 90"。 "Modo: 1"和"Modo: 2"之间有几个点,所以grep一个数据我用的是:

对于模式 1;

grep -A100000 "Modo:    1"  geom_dist_output | grep -B100000 "Modo:    2" | egrep -v "Modo:    2" > Mode-1

对于模式 2;

grep -A100000 "Modo:    2"  geom_dist_output | grep -B100000 "Modo:    3" | egrep -v "Modo:    3" > Mode-2

同样高达 90。

有什么方法或顺序,我可以 grep 不同的 Mode-i (i=1,2..90) 并创建不同的文件。

如果你想要单模式-$i:

sed -n "/Modo:    $i/,/Modo:/{/Modo:/b;p}" geom_dist_output >Mode-$i

此处 sed 打印从 Modo: $i 到后续 Modo: 的行,但 Modo: 行除外。

如果您想要一次获得所有 Mode-1..90 文件,并且您有一个带有 --suppress-matched 选项的 csplit

csplit -fMode- --suppress-matched geom_dist_output /Modo:/ '{*}'