Pregunta

Estoy intentando datos del tubo en "cortar" a, por ejemplo, cortar la primera columna de texto. Esto funciona

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

La lectura de la entrada estándar también funciona:

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

Sin embargo, tan pronto como una tubería está involucrado, que no acepta mi <CTRL+D> más, y no puede ser señal de "fin de fichero":

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

Actualización: Esto es al parecer un error en una versión antigua de bash (3.00.15). No funciona en las versiones más recientes (4.0.33 y 3.2.25 tratado). Sería bueno tener algo de solución, sin embargo, ya que no puedo actualizar fácilmente.


Antecedentes: Tengo un script / oneliner que me da una salida de condensado de cvs status (lo sé, CVS ...) de la forma

? filename

por ejemplo. para un archivo que no esté comprometido todavía. Me gustaría ser capaz de copiar + pegar partes de la salida de ese comando y utilizar esto como una entrada a otro comando, que se suma a estos archivos cvs. Decir:

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

Las ideas?

¿Fue útil?

Solución

has

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

Otros consejos

Sus ejemplos funcionan bien para mí. Lo cáscara está usando? ¿Qué utilidades?

Una cosa que a veces dispara a la gente es que Ctrl - D sólo funciona si es el primer carácter de la línea. Si copia y pega, es posible que a veces accidentalmente tener espacios en blanco como el primer carácter de la línea, o ninguna nueva línea al final del bloque pegado, en cuyo caso Ctrl - D no funcionará. Sólo tiene que darle vuelta y luego tratar Ctrl -. D de nuevo y ver si se soluciona el problema

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top