Показать n-й экземпляр сглаженного шаблона
Итак, вот моя проблема. У меня проблема с файлом.csv (Current.csv), так как в данных случайно размещаются запятые, поэтому при получении файла не отображаются постоянные номера столбцов для определенного типа информации, которую я ищу, К счастью, я понял, что эта информация всегда является третьим экземпляром формата даты (м, мм)/(д, дд) / гг. Поэтому я пытаюсь использовать регулярное выражение ниже, чтобы отображать только даты в i-й строке:
awk -F',' '{if (NR==$i)print}' Current.csv | grep -o "[0-9]{1,2}/[0-9]{1-2}/[0-9]{1,2}" | echo
Пока ничего не отображается, и я совершенно не понимаю, почему. Я предполагаю, что для отображения третьего нужно просто передать все это в:
awk {print $3}
Есть идеи по поводу поиска по регулярным выражениям в awk'd?
Образец линии
"Lettershere",numbershere,"retardedbrokenquoteshere, мм / дд / гг, morestuff, мм / дд / гг, цифры, мм / дд / гг
2 ответа
Предполагая, что файл CSV действителен (т. Е. Поля, содержащие запятые, заключены в кавычки), лучше использовать что-то, что фактически анализирует его как CSV. Следующий простой скрипт Python извлечет второй столбец каждой строки.
python -c 'import csv; import sys; [sys.stdout.write(row[1]+"\n") for row in csv.reader(sys.stdin)]'
Я не установлен, поэтому по умолчанию ноль, и в любом случае вы имеете в виду я, а не $ я.
Вам нужен grep -E для расширенных регулярных выражений.
Поле {1-2} в поле месяца должно быть {1,2}, а прямая косая черта должна быть защищена обратной косой чертой.
Трубопровод к эхо-сигналам потеряет какой-либо выходной сигнал, поскольку он не является фильтром и ни в коем случае не нужен.
Как предполагает mgorven, используйте другой подход, который обрабатывает CSV.