Search code examples
pythonfor-loopline

lines with matches as a new column


I have a file:

Position1
Val1
Val2
Val3
Position2
Val4
Val10
Val5
Position3
Val20
Val200

and I would like to move the line with the word "Position" as a new column, tab separated:

Val1\tPosition1
Val2\tPosition1
Val3\tPosition1
Val4\tPosition2
Val10\tPosition2
Val5\tPosition2
Val20\tPosition3
Val200\tPosition3

Val vary in quantity, so Position(s) have different amount of Val. I am happy to make it in python or unix shell


Solution

  • You can loop the lines in your file, saving the position string when you find it and outputting a new line otherwise:

    pos = ''
    for line in file:
        if line.startswith('Position'):
            pos = line
            continue
        print(f'{line}\t{pos}')
    

    Output (for your sample data):

    Val1    Position1
    Val2    Position1
    Val3    Position1
    Val4    Position2
    Val10   Position2
    Val5    Position2
    Val20   Position3
    Val200  Position3