Domanda

Sto cercando di dati tubo nel "taglio", per esempio, tagliare via la prima colonna di testo. Questo funziona

$ cat test.txt | cut -d\  -f2-

La lettura da stdin funziona anche:

$ cut -d\  -f2- -
? doc/html/analysis.html
? doc/html/classxytree-members.html
<CTRL+D>

Tuttavia, non appena un tubo è coinvolto, non accetta la mia <CTRL+D> più, e non può segnalare "fine del file":

$ cut -d\  -f2- - | xargs echo

Aggiornamento: Questo è apparentemente un bug in una vecchia versione di bash (3.00.15). E funziona nelle versioni più recenti (provato 4.0.33 e 3.2.25). Sarebbe bello avere qualche soluzione, però, dal momento che non è possibile aggiornare facilmente.


Sfondo: Ho uno script / oneliner che mi dà una potenza condensata di cvs status (lo so, CVS ...) sotto forma

? filename

es. per un file non ancora impegnati. Mi piacerebbe essere in grado di copiare + parti incollare dell'uscita da quella di comando e utilizzare questo come input per un altro comando, che aggiunge questi file CVS. Di ':

$ cut -d\  -f2- | xargs cvs add
<paste lines>
<CTRL-D>        # <-- doesn't work

idee?

È stato utile?

Soluzione

hai provato

$ cat | cut -d\  -f2- | xargs cvs add
<paste lines>
<CTRL-D>        # <-- doesn't work

Altri suggerimenti

I tuoi esempi funzionano bene per me. Cosa shell stai usando? Che utilità?

Una cosa che a volte la gente viaggi è che Ctrl - D funziona solo se è il primo carattere della riga. Se si copia e incolla, si potrebbe avere a volte accidentalmente spazi bianchi come primo carattere della linea, o nessuna nuova riga alla fine del blocco incollato, nel qual caso Ctrl - D non funzionerà. Basta premere invio e quindi provare Ctrl -. D ancora e vedere se questo risolve il problema

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top