Nem funciona no Windows (por exemplo, Git Bash) obviamente. Use a resposta de @ Mikel lá (o delimitador padrão é tab, simplesmente omita o -dargumento).
Mas é provavelmente sempre mais seguro mencionar essas bandeiras explicitamente, tanto para legibilidade quanto para portabilidade. Eu posso imaginar que algumas pessoas projetando um cutpara Windows não seguiriam o padrão completo.
Willem Van Onsem
3
Esta resposta deve ser aceita: código mais simples, explicação mais simples. você conseguiu: youtube.com/watch?v=dpNTHl7y45Y
neuronet
5
Esta resposta mudou minha vida
matheeeny
1
@WillemVanOnsem, se alguém escreve uma versão do cutWindows e não segue a especificação POSIX , não há razão para supor que qualquer script POSIX funcione com esse sistema. Atenha-se aos recursos especificados pelo POSIX. Não tente permitir futuras implementações hipotéticas não compatíveis; não é isso que "portabilidade" significa.
Curinga
12
awk -F '\t''{ print $2 }' inputfile
Isso extrai o segundo campo delimitado por tabulação de cada linha de entrada inputfile.
Mais genericamente, sem a necessidade de caracteres invisíveis: use trpara converter os delimitadores em um formato que possa ser especificado mais facilmente cut.
$ echo -e "a\tb\tc"|tr '\t'' '|cut -d' '-f2
b
tr é uma ferramenta simples, mas poderosa, de correspondência e substituição de caracteres.
Mas e se a entrada for abc(space)def(tab)ghi? Sua resposta vai render def, mas deve render ghi. Da mesma forma, se a entrada for ABC(tab)DEF(space)GHI, sua resposta renderá DEF, mas deverá render DEF(space)GHI.
G-Man
@ G-Man: O delimitador de espaço foi apenas um exemplo. Use o delimitador apropriado para seus dados - uma vírgula, por exemplo. echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2
nobar 26/03
... Mas, sim, se o delimitador precisar ser uma guia, minha abordagem não funcionará.
Respostas:
Dois caminhos:
Pressione Ctrl+ Ve depois Tab.
ou escreva assim:
fonte
-d
argumento).ksh93
, nãobash
. Isso é suportado pelo ksh93, zsh, bash, mksh e FreeBSD sh pelo menos ( pode chegar à próxima grande reversão da especificação padrão POSIX parash
).Tab é o padrão.
Veja a página do manual de corte .
Então você deveria escrever
fonte
cut
para Windows não seguiriam o padrão completo.cut
Windows e não segue a especificação POSIX , não há razão para supor que qualquer script POSIX funcione com esse sistema. Atenha-se aos recursos especificados pelo POSIX. Não tente permitir futuras implementações hipotéticas não compatíveis; não é isso que "portabilidade" significa.Isso extrai o segundo campo delimitado por tabulação de cada linha de entrada
inputfile
.fonte
Mais genericamente, sem a necessidade de caracteres invisíveis: use
tr
para converter os delimitadores em um formato que possa ser especificado mais facilmentecut
.tr
é uma ferramenta simples, mas poderosa, de correspondência e substituição de caracteres.fonte
abc(space)def(tab)ghi
? Sua resposta vai renderdef
, mas deve renderghi
. Da mesma forma, se a entrada forABC(tab)DEF(space)GHI
, sua resposta renderáDEF
, mas deverá renderDEF(space)GHI
.echo -e "abc\tdef ghi" |tr '\t' ',' |cut -d',' -f2