Получить строки на основе значения столбца из CSV - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть CSV с данными ниже

10.000.00.00,D3,1
10.001.00.00,C4,2
10.002.00.00,C5,2
10.000.88.99,B1,3
10.000.00.00,B2,3
10.000.00.00,C6,3
10.000.99.00,D1,3

пробовал ниже код

cat Data.csv | awk -F , '$3 == "3" { print }'

Нужно получить только те строки, последние значения которых равны 3.

Пожалуйста, дайте мне знать, как это сделать

Ответы [ 4 ]

5 голосов
/ 01 апреля 2019

Использование awk для получения только тех строк, которые имеют последние значения как 3 :

$ awk -F, '$NF==3' file
10.000.88.99,B1,3
10.000.00.00,B2,3
10.000.00.00,C6,3
10.000.99.00,D1,3

Разъяснения:

awk -F, '  # set the field separator to a comma
$NF==3     # NF is the last field, $NF last field value (see comments for more
' file                                                  #thanks @kvantour)
2 голосов
/ 02 апреля 2019

Зачем нам вообще нужны awk или sed для такого рода операций ???Разве это не перебор?

ОП запрашивает извлечение некоторых строк, удовлетворяющих определенному условию , из файла, даже не изменяя их формат ...

grep - это THE идеальный инструмент для этого.

$ grep ',3$' Data.csv 
10.000.88.99,B1,3
10.000.00.00,B2,3
10.000.00.00,C6,3
10.000.99.00,D1,3

В конечном итоге grep -E ',3\r?$' Data.csv, если у вас есть Windows EOL.

Также старайтесь избегать, насколько это возможно, cat <FILE> | <COMMAND>, вместо этого передайте непосредственно файл команде или перенаправьте stdinиз файла в команду (Command < file).

2 голосов
/ 01 апреля 2019

Вы можете попробовать с помощью sed:

sed '/,3$/!d' infile

Если у вас может быть \ r в конце строки, попробуйте так:

sed '/,3\r*$/!d' infile
0 голосов
/ 02 апреля 2019

вы можете использовать встроенную переменную awk для этого.

в нашем случае

'$ NF' - NF для количества полей в текущей записи

awk -F, '{if($NF == 3) {print $0} }' Data.csv
10.000.88.99,B1,3
10.000.00.00,B2,3
10.000.00.00,C6,3
10.000.99.00,D1,3

Подробнее о встроенной переменной можно узнать по следующей ссылке: Встроенные переменные Awk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...