以下のような番号のリストがあります。
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