J'essaie de canaliser les données dans "couper" pour, disons, couper la première colonne de texte. Cela fonctionneUtilisation de linux "couper" avec stdin
$ 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 pas signaler « fin 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 (essayé 4.0.33 et 3.2.25). Il serait bon d'avoir une solution de contournement, cependant, car je ne peux pas facilement mettre à niveau.
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 engagé. J'aimerais pouvoir copier + coller des parties de la sortie de cette commande et l'utiliser comme une entrée pour une autre commande, qui ajoute ces fichiers à cvs. Dire:
$ cut -d\ -f2- | xargs cvs add
<paste lines>
<CTRL-D> # <-- doesn't work
Idées?
Cela fonctionne en principe, mais pas dans mon cas. Il s'avère que le problème était une très ancienne version de bash. Par ailleurs, le 'chat' dans votre exemple ne fait rien et peut être omis. Il ne fait que passer l'entrée du clavier à 'couper ', ce que vous obtenez quand vous appelez couper sans nom de fichier. Il y a une vieille blague qui considère la cruauté envers les animaux comme un moyen d'envoyer des chats dans les tuyaux ;-). – jdm