Использование Linux «cut» с помощью стандартного ввода

StackOverflow https://stackoverflow.com/questions/2226762

  •  19-09-2019
  •  | 
  •  

Вопрос

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

$ 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

Идеи?

Это было полезно?

Решение

попытался ли ты

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top