Como faço tipo um guia separado arquivo na coluna enésima usando tipo cygwin?

StackOverflow https://stackoverflow.com/questions/426647

  •  06-07-2019
  •  | 
  •  

Pergunta

Eu tenho um enorme guia separados arquivo que eu quero classificar sua 2ª coluna. Eu preciso usar o caractere de tabulação como delimitador de campo no tipo cygwin. Então eu preciso de algo como isto:

sort -t \t -k 2,2 in.txt > out.txt

mas o comando avalia rápidas '\ t' literalmente e não como o caractere de tabulação. Note que eu preciso fazer isso em uma máquina Windows rodando Cygwin. Variações como

sort -t "\t"
sort -t \"\t\"

não funcionam, nem o colocar isso em um arquivo cmd com um separador real no lugar do \ t acima.

Edit:. Uma solução usando o shell DOS ou o shell Cygwin bash é fina

Foi útil?

Solução

Na minha máquina (Mac bater rápido, GNU tipo ...) isso funciona:

sort -t '   ' -k 2,2 in.txt > out.txt

(A guia "real" entre as aspas.)

Para obter o guia lá eu digitar CTRL-V, TAB (CTRL-V seguido por TAB).

EDIT:. Eu já testei-o em uma máquina Windows a partir do cygwin pronta e ele funciona da mesma lá (como eu esperava, bash é bash)

Outras dicas

Você precisa adicionar um sinal $ na frente do \ t para ligar interpolação de string, por isso o guia realmente é enviado para espécie. Isso deve funcionar em qualquer terminal:

sort -t $'\t' -k 2,2 in.txt > out.txt

No comando do Windows Prompt, a solução mais simples eu encontrei é desativar tab-completion primeiro com:

cmd /f:off

Em seguida, você pode digitar um caractere de tabulação literal.

Eu queria uma solução para GnuWin32 tipo no Windows, mas nenhuma das soluções acima funcionou para mim na linha de comando. Mas o seguinte arquivo de lote (.bat) trabalhou que é o que eu queria de qualquer maneira. Digite o caractere de tabulação dentro das aspas duplas.

C:> foo.bat gato

-t tipo -k3"" tabfile.txt

Qualquer um vê a ironia aqui?
Você tem que saltar através de aros para obter o caractere de tabulação para ser um guia ...
No comando do Windows prompt de eu era capaz de fazê-lo usando:
c: \ bin \ tipo -t "(guia real)", mas apenas depois de iniciar o cmd / f: off (como sugerido acima)
No arquivo bat do Windows eu era capaz de fazer a mesma coisa enquanto editor de texto (notepad2 :-) foi definido para inserir separadores como guias, não espaços.

Existem algumas dicas bem gostava de usar um $ -t '\ t" mas eu tentei cerca de 2 ^ 16 combinações de isso sem sorte ou cabelo restante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top