Question

Je suis en train de données de tuyauterie en « coupe », disons, couper la première colonne de texte. Cela fonctionne

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

Lecture de stdin fonctionne aussi:

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

Cependant, dès qu'un tuyau est impliqué, il n'accepte pas mon <CTRL+D> plus, et je ne peux signaler « la fin du fichier »:

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

Mise à jour: Ceci est apparemment un bug dans une ancienne version de bash (3.00.15). Il fonctionne dans les versions plus récentes (et essayé 4.0.33 3.2.25). Il serait agréable d'avoir une solution de contournement, mais, puisque je ne peux pas facilement mettre à jour.


Contexte: J'ai un script / oneliner qui me donne une sortie condensée de cvs status (je sais, CVS ...) sous la forme

? filename

par exemple. pour un fichier non encore commis. Je voudrais pouvoir copier + coller des morceaux de la sortie de cette commande et l'utiliser comme une entrée à une autre commande, qui ajoute ces fichiers à cvs. Dis:

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

Idées?

Était-ce utile?

La solution

avez-vous essayé

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

Autres conseils

Vos exemples fonctionnent très bien pour moi. Qu'est-ce que shell utilisez-vous? Qu'est-ce que les services publics?

Une chose qui déclenche parfois les gens est que Ctrl - D ne fonctionne que si elle est le premier caractère de la ligne. Si vous copiez et collez, vous pourriez avoir parfois accidentellement des espaces, comme le premier caractère de la ligne, ou pas de nouvelle ligne à la fin du bloc collé, auquel cas Ctrl - D ne fonctionnera pas. Il suffit de frapper retour et puis essayez Ctrl -. D nouveau et voir si cela résout votre problème

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top