在stdin中使用linux“ cut”

jdm*_*jdm 5 bash cut pipe

我正在尝试将数据传递到“剪切”中,例如剪切掉文本的第一列。这有效

$ cat test.txt | cut -d\  -f2-
Run Code Online (Sandbox Code Playgroud)

从stdin读取也可以:

$ cut -d\  -f2- -
? doc/html/analysis.html
? doc/html/classxytree-members.html
<CTRL+D>
Run Code Online (Sandbox Code Playgroud)

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

$ cut -d\  -f2- - | xargs echo
Run Code Online (Sandbox Code Playgroud)

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


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

? filename
Run Code Online (Sandbox Code Playgroud)

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

$ cut -d\  -f2- | xargs cvs add
<paste lines>
<CTRL-D>        # <-- doesn't work
Run Code Online (Sandbox Code Playgroud)

有想法吗?

Lac*_*che 4

你有没有尝试过

$ cat | cut -d\  -f2- | xargs cvs add
<paste lines>
<CTRL-D>        # <-- doesn't work
Run Code Online (Sandbox Code Playgroud)