Usando o “cut” linux com stdin
Pergunta
Eu estou tentando dados da tubulação no "cut" para, digamos, cortar a primeira coluna de texto. Isso funciona
$ cat test.txt | cut -d\ -f2-
Leitura de stdin também funciona:
$ cut -d\ -f2- -
? doc/html/analysis.html
? doc/html/classxytree-members.html
<CTRL+D>
No entanto, assim como um tubo está envolvido, ele não aceita minha <CTRL+D>
mais, e eu não posso sinalizar "fim de arquivo":
$ cut -d\ -f2- - | xargs echo
Update: Esta é, aparentemente, um bug em uma versão antiga do bash (3.00.15). Ele faz o trabalho em versões mais recentes (tentou 4.0.33 e 3.2.25). Seria bom ter alguma solução alternativa, porém, desde que eu não pode atualizar facilmente.
Fundo: Eu tenho um script / oneliner que me dá uma saída de condensado de cvs status
(eu sei, CVS ...) na forma
? filename
por exemplo. para um arquivo que ainda não comprometidos. Eu gostaria de ser capaz de copiar + colar partes da saída desse comando e usar isso como uma entrada para outro comando, que adiciona esses arquivos para cvs. Diga:
$ cut -d\ -f2- | xargs cvs add
<paste lines>
<CTRL-D> # <-- doesn't work
Idéias?
Solução
você já tentou
$ cat | cut -d\ -f2- | xargs cvs add
<paste lines>
<CTRL-D> # <-- doesn't work
Outras dicas
Seus exemplos funcionam bem para mim. O shell você está usando? Que serviços públicos?
Uma coisa que às vezes tropeça pessoas se é que Ctrl - D só funciona se for o primeiro caractere na linha. Se você copiar e colar, você pode, por vezes, acidentalmente ter espaços em branco como o primeiro caractere da linha, ou nenhuma nova linha no final do bloco colado, em caso Ctrl , que - D não vai funcionar. Basta clicar retorno e, em seguida, tente Ctrl -. D novamente e ver se isso resolve o seu problema