У меня есть файл с разделителями-запятыми "myfile.csv", где 5-й столбец - это отметка даты/времени. (мм/дд/гггг чч:мм). Мне нужно перечислить все строки, содержащие повторяющиеся даты (их много)
Я использую оболочку bash через cygwin для WinXP.
$ cut -d, -f 5 myfile.csv | sort | uniq -d
правильно возвращает список повторяющихся дат
01/01/2005 00:22
01/01/2005 00:37
[snip]
02/29/2009 23:54
Но я не могу понять, как скормить это grep, чтобы получить все строки. Очевидно, я не могу использовать xargs
напрямую, так как вывод содержит пробелы. Я думал, что смогу сделать uniq -z -d
, но по какой-то причине объединение этих флагов приводит к тому, что uniq (очевидно) ничего не возвращает.
Итак, учитывая, что
$ cut -d, -f 5 myfile.csv | sort | uniq -d -z | xargs -0 -I {} grep '{}' myfile.csv
не работает... что делать?
Я знаю, что мог бы сделать это в perl
или другом языке сценариев... но мой упрямый характер настаивает на том, чтобы я мог сделать это в bash
, используя стандартные инструменты командной строки, такие как sort
, uniq
, find
, grep
, cut
и т. д.
Научите меня, о баш-гуру. Как я могу получить список нужных мне строк с помощью обычных инструментов cli?