Рейтинг:0

Сопоставление шаблонов Grep не работает?

флаг bd

У меня есть текстовый файл так:

«Идентификатор», «Название района», «Название района», «Улица», «День недели», «Месяц», «День», «Час», «Часть суток», «Легкие травмы», «Серьезные травмы» ,"Жертвы","Привлеченные транспортные средства","Долгота","Широта"
«2017S008429», «Неизвестно», «Неизвестно», «Номер 27», «Пятница», «Октябрь», 13,8, «Утро», 2,0,2,2,2.12562442,41.34004482
"2017S007316", "Неизвестно", "Неизвестно", "Номер 3 Зона Франка / Номер 50 Зона Франка", "Пятница", "Сентябрь", 1,13, "Утро", 2,0,2,2,2.12045245, 41.33942606
«2017S010210», «Неизвестно», «Неизвестно», «Литораль (Бесас)», «Пятница», «Декабрь», 8,21, «Полдень», 5,0,5,2,2.1673561,41.3608855
"2017S006364", "Неизвестно", "Неизвестно", "Número 3 Zona Franca", "Пятница", "Июль", 21,2, "Ночь", 1,0,1,2,2.12452894,41.33766786
«2017S004615», «Сант-Марта», «Эль-Камп-де-л'Арпа-дель-Клот», «Лас-Навас-де-Толоса», «Четверг», «Май», 25,14, «День», 1,0,1,3 ,2.185272,41.416365
«2017S007775», «Сант-Марта», «Эль-Камп-де-л'Арпа-дель-Клот», «Индустрия / Тринксан», «Среда», «Сентябрь», 20,12, «Утро», 1,0,1,2, 2.183245,41.416336
«2017S004484», «Сант-Марта», «Эль-Камп-де-л'Арпа-дель-Клот», «Тринксант / Индустрия», «Суббота», «Май», 20,21, «День», 1,0,1,2, 2.183245,41.416336
"2017S010680", "Сант Марта", "Эль Камп де л'Арпа дель Клот", "Индустрия", "Вторник", "Декабрь", 26,20, "Полдень", 2,0,2,1,2.183561, 41.416372
"2017S005152", "Сант-Марто", "Эль-Камп-де-л'Арпа-дель-Клот", "Индустрия", "Понедельник", "Июнь", 12,15, "Полдень", 1,0,1,1,2.184059, 41.416763
«2017S003932», «Сант-Марта», «Эль-Камп-де-л'Арпа-дель-Клот», «Марагалл», «Среда», «Май», 3,20, «Полдень», 1,0,1,1,2.181225, 41.413958
"2017S010348", "Сант Марта", "Эль Камп де л'Арпа дель Клот", "Индустрия", "Четверг", "Декабрь", 14,20, "Полдень", 1,0,1,2,2.18229, 41.415772
"2017S000245", "Sant MartÃ", "el Camp de l'Arpa del Clot", "ST ANTONI M CLARET / Pg Maragall", "Среда", "Январь", 11,7, "Утро", 1,0, 1,2,2.180453,41.41579
"2017S005695", "Сант-Марта", "Эль-Камп-де-л'Арпа-дель-Клот", "Сан-Антонио Мария Кларе / Гинардо", "Пятница", "Июнь", 30,12, "Утро", 1,0,1 ,2,2.18114,41.416295
"2017S007384", "Сант-Марта", "Эль-Камп-де-л'Арпа-дель-Клот", "Сан-Антонио Мария Кларет", "Понедельник", "Сентябрь", 4,16, "День", 0,1,1,2 ,2.176324,41.412546
"2017S008080", "Сант-Марта", "Эль-Камп-де-л'Арпа-дель-Клот", "Сан-Антонио Мария Кларет", "Суббота", "Сентябрь", 30,19, "День", 1,0,1,2 ,2.176324,41.412546
"2017S003439", "Сант-Марта", "Эль-Камп-де-л'Арпа-дель-Клот", "Корсега / Корсега", "Понедельник", "Апрель", 17,14, "Полдень", 1,0,1,2, 2.178314,41.410784
"2017S002410", "Сант-Марта", "Эль-Камп-де-л'Арпа-дель-Клот", "КАРСЕГА / Дос-де-Маиг", "Суббота", "Март", 25,14, "День", 4,0, 4,2,2.177719,41.410323
«2017S009296», «Сант-Марто», «Эль-Камп-де-л'Арпа-дель-Клот», «Индустрия», «Четверг», «Ноябрь», 9,22, «Ночь», 1,0,1,1,2.17674, 41.411445

Я пробовал что-то вроде:

grep "25 мая" $1

куда $1 - это имя файла, которое вводит пользователь. Таким образом, в основном предполагается найти строки, содержащие дату 25 мая, но он абсолютно ничего не отображает. Я точно знаю, что есть строки, содержащие дату 25 мая.

Я также пробовал следующее, но это все еще не работает:

grep "\"Май\", 25" $1

Что я делаю не так?

Рейтинг:2
флаг hr

Кавычки тоже символы - ваши файлы не содержат 25 мая, это содержит "Май", 25. Так

grep '"май",25' "$1"

или же

grep "\"Май\",25" "$1"

(но нет grep "\"Май\", 25" "$1" - пробелы также являются символами).

Или вы можете использовать инструмент, поддерживающий CSV, который понимает цитирование CSV:

mlr --csv filter 'Месяц == "Май" && День == 25'

csvgrep -c Месяц -m Май "$1" | csvgrep -c День -m 25
Yunfei Chen avatar
флаг bd
Просто интересно, у меня есть такой файл, как file1.txt, в котором все даты отформатированы так, как будто он имеет «май», 25, и я хотел найти даты в этом файле, которые совпадают с датами на другом, поэтому Я попробовал ``cat file1.txt | xargs -I{} grep -E {} "$1"``` но это, очевидно, не работает, потому что кавычки нужно экранировать, есть ли для этого простое решение??
флаг hr
@YunfeiChen `grep` уже имеет возможность читать список шаблонов из файла (хотя они должны быть по одному в строке) - `grep -f file1.txt "$1"` (или `grep -F -f file1. txt "$1"`, так как даты представляют собой простые фиксированные строки, а не регулярные выражения).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.