Используя Linux “сокращение” с stdin

Я пытаюсь передать данные по каналу в "сокращение", чтобы, скажем, срезать первый столбец текста. Это работает

$ 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

Обновление: Это - по-видимому, ошибка в старой версии удара (3.00.15). Это действительно работает в более поздних версиях (попробовал 4.0.33 и 3.2.25). Было бы хорошо иметь некоторое обходное решение, тем не менее, так как я не могу легко обновить.


Фон: у меня есть сценарий/острота, который дает мне сжатый вывод cvs status (Я знаю, CVS...) в форме

? filename

например, для файла, не фиксировавшего все же. Я хотел бы смочь к copy+paste частям вывода от той команды и использовать это в качестве входа к другой команде, которая добавляет эти файлы к cvs. Скажите:

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

Идеи?

5
задан jdm 9 February 2010 в 12:23
поделиться

2 ответа

вы пробовали

$ cat | cut -d\  -f2- | xargs cvs add
<paste lines>
<CTRL-D>        # <-- doesn't work
4
ответ дан 15 December 2019 в 01:00
поделиться

Ваши примеры мне подходят. Какую оболочку вы используете? Какие утилиты?

Иногда людей сбивает с толку то, что Ctrl - D работает, только если это первый символ в строке. Если вы копируете и вставляете, у вас иногда может случайно оказаться пробел в качестве первого символа строки или отсутствие новой строки в конце вставленного блока, и в этом случае Ctrl - D выиграет. не работает. Просто нажмите Return и попробуйте снова Ctrl - D и посмотрите, решит ли это вашу проблему.

0
ответ дан 15 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: