substitua nova linha pela guia em um local específico

0

Eu tenho um arquivo como este.

M00425_ght_cgd2_2212_B_0_2 (newline)
ATGCCGTTAGAGCTAG
M00425_ght_cgd2_2213_B_0_3_1 (newline)
GTACATTGACATAGAGTACATAGCGA

Eu quero um arquivo como este:

M00425_ght_cgd2_2212_B_0_2(tab)ATGCCGTTAGAGCTAG
M00425_ght_cgd2_2213_B_0_3_1(tab)GTACATTGACATAGAGTACATAGCGA

Alguém pode ajudar?

    
por user300658 27.10.2014 / 08:46

2 respostas

2

Comando simples sed :

sed '$!N;s/\n/\t/' inputfile.txt > outputfile.txt

O que significa juntar todos os pares de linhas com um delimitador de tabulação.

Este comando une duas linhas consecutivas com o comando N . Eles se juntam a um caractere \n entre eles. O comando substituto substitui essa nova linha por uma tabulação, unindo assim cada par de linhas com um delimitador de tabulação.

Além disso, isso parece com o comando sed '/$/N;s/\n/\t/' inputfile.txt .

SE seu arquivo contiver linhas vazias, você pode primeiro excluir todas as linhas usando o comando sed abaixo:

sed -i '/^$/d' inputfile.txt
    
por sddgob 27.10.2014 / 09:48
0

Isto é semelhante à resposta de Jacob, mas diferente o suficiente que eu achei que merecia ser mencionada. Em vez de procurar pela presença de uma string, você poderia verificar se a linha continha caracteres diferentes de "GACT".

#!/usr/bin/env python

with open('input.txt','r') as f:
    lines = f.readlines()
for i in range(0,len(lines)):
    if len(lines[i].strip('GACT\n'))>0:
        lines[i] = lines[i].replace('\n','\t')
with open('output.txt','w') as f:
    f.writelines(lines)

Se o seu arquivo não atender aos requisitos de identificadores exclusivos nas linhas de substituição, você também poderá fazer uma suposição diferente. O seguinte assume que, para cada linha numerada ímpar, você deseja substituir a nova linha por uma guia, e para cada linha com numeração par, você não o faz.

#!/usr/bin/env python

with open('input.txt','r') as f:
    lines = f.readlines()
for i in range(0,len(lines)):
    if i/2==i/2.0:
        lines[i] = lines[i].replace('\n','\t')
with open('output.txt','w') as f:
    f.writelines(lines)

Você pode salvá-los como, por exemplo, lines2tabs.py e, em seguida, navegar até o diretório em um terminal usando cd e executá-lo usando python lines2tabs.py . Note que você terá que alterar input.txt para o nome do seu arquivo.

    
por TheSchwa 27.10.2014 / 09:19