#linux #command-line
#linux #командная строка
Вопрос:
Я пытаюсь использовать grep и cut с помощью труб.
файл:
c1 c2
e1 e2
e3 e4
этот файл имеет значения, разделенные пробелами, но когда я выполняю
cut -f2 -d' ' | grep "e2" example.csv
результат — это e1 e2
вывод должен быть e2
, но я не уверен, cut
принимает ли ввод в каком-то другом формате, на справочных страницах указано, что имя файла, если оно не указано, тогда ввод будет принят.
Ответ №1:
У вас все наоборот. Вывод cut
должен быть отправлен на grep
.
cut -f2 -d' ' example.csv | grep e2
В противном случае grep
работает с файлом, а не с его вводом, и cut
работает со стандартным вводом, который поступает из внешнего контекста, возможно, с вашей клавиатуры?
Конвейер принимает выходные данные команды левой стороны и подключает ее к вводу правой стороны, а не наоборот. Команда левой стороны не знает, каковы аргументы команды правой стороны (и наоборот).
Ответ №2:
Используйте свой входной файл в качестве аргумента для cut
:
cut -f2 -d' ' example.csv | grep "e2"