Как я могу использовать grep для поиска только значений столбца ниже токена? Например, в следующем CSV-файле:
A B C 1 4 5 2 3 0 1 3 6
... как я могу получить только значения столбца B?
Я не уверен, что вы можете сделать это с помощью 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
Использование 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