5

我正在尝试将数据通过管道传输到“剪切”中,例如剪切第一列文本。这有效

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

从标准输入读取也可以:

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

但是,一旦涉及管道,它就不再接受我<CTRL+D>的,并且我不能发出“文件结束”的信号:

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

更新:这显然是旧版本 bash (3.00.15) 中的一个错误。它确实适用于更新的版本(尝试过 4.0.33 和 3.2.25)。不过,最好有一些解决方法,因为我无法轻松升级。


背景:我有一个脚本/oneliner,它以cvs status形式为我提供了(我知道,CVS ...)的浓缩输出

? filename

例如,对于尚未提交的文件。我希望能够从该命令复制+粘贴部分输出并将其用作另一个命令的输入,该命令将这些文件添加到 cvs。说:

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

想法?

4

2 回答 2

4

你有没有尝试过

$ cat | cut -d\  -f2- | xargs cvs add
<paste lines>
<CTRL-D>        # <-- doesn't work
于 2010-02-09T04:40:12.827 回答
0

你的例子对我来说很好。你用的是什么外壳?什么实用程序?

有时会让人绊倒的一件事是Ctrl-D仅当它是该行中的第一个字符时才有效。如果您复制和粘贴,您有时可能会不小心将空格作为行的第一个字符,或者在粘贴块的末尾没有换行符,在这种情况下Ctrl-D将不起作用。只需点击返回,然后再试一次CtrlD看看是否能解决您的问题。

于 2010-02-09T04:53:31.227 回答