Выбор строк в файле CSV на основе значения столбца

Используя strace, Вы видите iwconfig выполнение чего-то вроде этого:

socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
ioctl(3, SIOCGIWNAME, 0xbfb02c7c)       = 0
ioctl(3, SIOCGIWNWID, 0xbfb02c7c)       = -1 EOPNOTSUPP (Operation not supported)
ioctl(3, SIOCGIWFREQ, 0xbfb02c7c)       = -1 EINVAL (Invalid argument)
ioctl(3, SIOCGIWENCODE, 0xbfb02c7c)     = 0

И приблизительно дюжина другой ioctls следуют. Упорно ищите их ioctls в ядре и Вы найдете, где данные.

1
24.06.2013, 17:22
3 ответа

Принятие там не является никакими встроенными запятыми, awk идеально подходит для этого.

awk -F , '$4 == "abc" { print }' input.csv
5
27.01.2020, 23:12
  • 1
    'печать' является действием по умолчанию, таким образом, можно просто опустить его. –  gelraen 24.06.2013, 14:03
  • 2
    разделительный символ для CSV является не всегда запятой, например, не со значениями по умолчанию для некоторых версий Excel. –  Anthon 24.06.2013, 19:36
  • 3
    Замена запятой с чем-то еще очень, очень легка. –  Ignacio Vazquez-Abrams 24.06.2013, 23:22

Со следующим data.csv :

Itemname,Value,Description,Component
1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,16
17,18,19,20
21,22,23,24
25,26,27,28
29,30,31,32
33,34,35,abc
37,38,39,40
41,42,43,44
45,46,47,48
49,50,51,52
53,54,55,56
57,58,59,60
61,62,63,64
65,66,67,68
69,70,71,72
73,74,75,76
77,78,79,80
81,82,83,84
85,86,87,88
89,90,91,92
93,94,95,96
97,98,99,100

Используя csvkit :

$ csvsql --query "SELECT * FROM data WHERE Component = 'abc'" data.csv
Itemname,Value,Description,Component
33,34,35,abc
0
27.01.2020, 23:12

Я использовал другой инструмент в csvkit:csvgrep.

$ csvgrep -c 4 -m "abc" data.csv > test.csv

Это результирующее содержимое файлаtest.csv:

Itemname,Value,Description,Component
33,34,35,abc

-cпредназначен для обозначения столбца, в котором нужно искать. Вы также можете использовать заголовок, просто убедитесь, что пишете его точно так же, заглавные буквы имеют значение:

$ csvgrep -c Component -m "abc" data.csv > test.csv

Itemname,Value,Description,Component
33,34,35,abc

и -m- это шаблон соответствия, я уверен, что есть способ использовать регулярные выражения, если вы хотите получить больше глубины -в своем сопоставлении. затем он помещается в новый файл с именем test.csv.

4
27.01.2020, 23:12

Теги

Похожие вопросы