Input file:
$ cat file.txt
500:120:100:X
:100:120
200:900:125
120:120
:900
120:345
12:900:1234:34
:90
Required: Join the lines which startswith : with the previous line.
i.e. required output is:
500:120:100:X:100:120
200:900:125
120:120:900
120:345
12:900:1234:34:90
The python script to achieve this:
data=open("file.txt").read().split("\n")
for i,line in enumerate(data):
if line.startswith(":"):
data[i-1]= data[i-1]+line
data.pop(i)
print '\n'.join(data),
Executing it:
$ python merge-lines.py
500:120:100:X:100:120
200:900:125
120:120:900
120:345
12:900:1234:34:90
The solution using UNIX Awk can be found here
More about python enumerate function can be found here. Mentioned below is a small example on python enumerate function
>>> for i, student in enumerate(['Alex', 'Ryan', 'Deb']):
... print i, student
...
0 Alex
1 Ryan
2 Deb
>>>
Related Posts:
- Print section of file using line number - Python
- Print line next to pattern using Python
- Print line above pattern using Python
New learning:
Python list pop method:
list.pop([i])
Remove the item at the given position in the list, and return it. If no index is specified, a.pop() removes and returns the last item in the list.