Назад | Перейти на главную страницу

Отображение n-го экземпляра шаблона grepped

Итак, вот моя проблема. У меня проблема с файлом .csv (Current.csv) в том, что в данных случайным образом расположены запятые, поэтому awk-файл не дает мне постоянных номеров столбцов для определенного типа информации, которую я ищу . К счастью, я понял, что эта информация всегда является третьим экземпляром формата даты (м, мм) / (д, дд) / гг. Поэтому я пытаюсь использовать приведенное ниже регулярное выражение, чтобы отобразить только даты в 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?

Линия отбора проб
"буквы здесь", числа здесь, "retardedbrokenquoteshere", мм / дд / гг, morestuff, мм / дд / гг, числа, мм / дд / гг

Предполагая, что файл CSV действителен (т.е. поля, содержащие запятые, заключены в кавычки), вам лучше использовать что-то, что фактически анализирует его как CSV. Следующий простой скрипт Python извлечет второй столбец каждой строки.

python -c 'import csv; import sys; [sys.stdout.write(row[1]+"\n") for row in csv.reader(sys.stdin)]'

i не установлен, поэтому по умолчанию равен нулю, и в любом случае вы имеете в виду i, а не $ i.

Для расширенных регулярных выражений вам понадобится grep -E.

{1-2} в поле месяца должно быть {1,2}, а косые черты должны быть защищены обратными косыми чертами.

Конвейер для эха приведет к потере любого вывода, поскольку это не фильтр, и он не нужен ни в коем случае.

Как предлагает mgorven, используйте другой подход, который обрабатывает csv.