Как я могу использовать grep для поиска только значений столбца ниже токена? Например, в следующем CSV-файле:

A     B     C  
1     4     5  
2     3     0  
1     3     6

... как я могу получить только значения столбца B?

2 ответа2

4

Я не уверен, что вы можете сделать это с помощью grep, однако вы можете использовать awk:

awk '{ print $2}' file.csv

Он распечатает второй столбец вашего файла.


РЕДАКТИРОВАТЬ

Если вы не хотите печатать имя столбца (в примере B ), вы можете установить условие для FNR:

FNR Номер входной записи в текущем входном файле.

Как это:

awk ' FNR > 1 { print $2}' file.csv

РЕДАКТИРОВАТЬ 2

Если ваш файл представляет собой настоящий файл CSV (значения, разделенные запятыми), вы должны предоставить аргумент разделителя полей (-F или --field-separator):

awk -F',' ' FNR > 1 { print $2}' file.csv
2

Использование grep в команде согласно вопросу.

cat file.csv | cut -d " " -f 2 | grep -o '[0-9]'

Где cut -d (разделитель ""), используя пробел или "," когда csv запятая, а -f 2 - второе поле

grep -o - только соответствие

Изменить, чтобы разрешить не числовое поле теряет grep

cat file.csv | cut -d " " -f2 | tail -n +2

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .