Я пытаюсь передать данные по каналу в "сокращение", чтобы, скажем, срезать первый столбец текста. Это работает
$ 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
Идеи?
вы пробовали
$ cat | cut -d\ -f2- | xargs cvs add
<paste lines>
<CTRL-D> # <-- doesn't work
Ваши примеры мне подходят. Какую оболочку вы используете? Какие утилиты?
Иногда людей сбивает с толку то, что Ctrl - D работает, только если это первый символ в строке. Если вы копируете и вставляете, у вас иногда может случайно оказаться пробел в качестве первого символа строки или отсутствие новой строки в конце вставленного блока, и в этом случае Ctrl - D выиграет. не работает. Просто нажмите Return и попробуйте снова Ctrl - D и посмотрите, решит ли это вашу проблему.