使用linux“cut”与stdin

时间:2010-02-09 04:31:49

标签: bash pipe cut

我正在尝试将数据导入“剪切”,例如,删除第一列文本。这工作

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

从stdin读取也有效:

$ 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

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

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

想法?

2 个答案:

答案 0 :(得分:4)

你试过吗

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

答案 1 :(得分:0)

你的例子对我来说很好。你用的是什么外壳?什么工具?

有时会引起人们兴趣的一件事是 Ctrl - D 只有在它是行中的第一个字符时才有效。如果复制和粘贴,有时可能会意外地将空格作为行的第一个字符,或者在粘贴块的末尾没有换行符,在这种情况下 Ctrl - D 不行。只需点击返回,然后再次尝试 Ctrl - D ,看看是否能解决问题。