如何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:/ '{*}'
我有一个之前计算的输出 (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:/ '{*}'