У меня есть файл с разделителями-запятыми "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?