Вот как я это делаю: работает с кучей каталогов, которые мы хотим очищать каждую ночь.
find /h/$USER -maxdepth 1 -name "*.txt" -type f -mtime +30 -delete
Не могу сказать, лучший это или худший способ сделать это, но он работает годами без каких-либо проблем, на самом деле это набор очистителей мусора, все тот же синтаксис, никаких проблем, поэтому я думаю, что это достаточно хорошо для производства..
И метод grep
:
$ egrep '^([^,]*,){6}\*,' file.txt
jagan3,*,*,*,*,*,*,24,25,26
jagan5,*,*,*,*,*,*,24,25,26
^
... соответствует нулевой строке, но только в начале строки
([^,]*,){6}
... соответствует ровно 6 вхождениям произвольного текста, за которым следует запятая
\*,
... соответствует буквальной звездочке, за которой следует запятая
Итак, чтобы переписать ваш файл, сохранив только эти строки:
$ egrep '^([^,]*,){6}\*,.*' file.csv > $$; mv $$ file.csv
В in.txt
находится ваш входной файл, и вы хотите скопировать строки со звездочкой в седьмом столбце в файл out.txt
, вы можете использовать следующую команду grep:
grep -E '^(([[:alnum:]]+|[*]),){6}\*' in.txt > out.txt
Объяснение :вы сначала смотрите начало строки (^
), за которой следуют шесть последовательных либо буквенно-цифровых символов, либо звездочки , за которой следует запятая((([[:alnum:]]+|[*]),)
; с {6}
, определяющим количество повторений ), затем проверьте, является ли следующий символ звездочкой. Если да, соответствующая строка копируется в out.txt
.