вырезать, не обрезая столбцы при использовании с pipe

#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"