Como adicionar um número de linha seguido por uma tabulação em um arquivo de texto

1

Eu tentei usar

nl -ba -s '\t' full_media > full_media2

Mas realmente não adicionou a guia, mas adicionou o texto "\ t" depois do número da linha. O arquivo im edição é um arquivo CSV e aqui por eu estou tentando adicionar uma nova coluna para o início com id.

    
por dinesh707 09.02.2015 / 10:14

1 resposta

4

Se você estiver usando um shell moderno como bash ou zsh, use $ para que o shell avalie \t e o substitua por uma guia real:

nl -ba -s $'\t' full_media > full_media2

Mesmo assim, se você examinar a saída, parece que o separador padrão é uma guia:

$ nl -ba -s $'\t' ~/at.sh | od -c
0000000                       1  \t   n   o   h   u   p       s   g    
$ nl -ba  ~/at.sh | od -c        
0000000                       1  \t   n   o   h   u   p       s   g    

De fato, o separador padrão é tab, conforme especificado pelo POSIX. De man nl :

   -s  sep
          Specify  the  characters  used in separating the line number and
          the corresponding text line. The default sep shall be a <tab>.

Para adicionar uma coluna ao CSV, tente usar o Python:

#! /usr/bin/env python2

from sys import stdin, stdout
import csv

csvin = csv.reader(stdin, delimiter='\t')
csvout= csv.writer(stdout, delimiter='\t')
count = 1

for row in csvin:
    csvout.writerow ([count] + row)
    count = count + 1

Salve como um script (digamos nl.py ) e execute:

python2 nl.py < full_media > full_media2
    
por 09.02.2015 / 10:20