我有一个如下数字列表:
1 0/1
2 1/1
3 1/1
4 1/1
5 1/1
6 1/1
7 0/1
8 0/1
如果连续行的第 2 列是“1/1”,我想报告位置的开始和结束,比如在这里,应该是:2-6
如果需要,我应该如何应用一些简单的 bash 代码或 python 来做到这一点?
非常感谢
如果您能够在 python 中编码,则可以通过以下方式解决它:
1/1
。所以代码看起来像:
import re
# step 1
with open('filename') as f:
data = f.read()
# step 2
list = re.findall(r'(\d+)\s+1/1', data)
# step 3
# Check the link in the description of the algorithm
重击解决方案:
#! /bin/bash
unset in # Flag: are we inside an interval?
unset last # Remember the last position.
while read p f ; do
if [[ $f = 1/1 && ! $in ]] ; then # Beginning of an interval.
echo -n $p-
in=1
elif [[ $f = 1/1 && $in ]] ; then # Inside of an interval.
last=$p
elif [[ $f != 1/1 && $in ]] ; then # End of an interval.
echo $last
unset in
fi
done