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

grep или sed, чтобы найти целочисленное значение выше заданной суммы?

Это относится к другому вопросу: Как мне использовать robocopy для рекурсивного вывода списка всех файлов определенного размера?

Я хотел бы проанализировать вывод команды (или записать файл журнала) и найти строковое значение, преобразовать его в целое число, а затем посмотреть, больше ли это целочисленное значение заданного целого числа.

Например, учитывая строку:

      *EXTRA File          78223    C:\_Google.Enterprise.Contract.2010-06-01.pdf

Я хотел бы сравнить 78223 с 10485760. Возможно ли это с помощью grep или sed?

Спасибо!

Использовать awk следующим образом:

$ echo '*EXTRA File     78223    C:\foo.pdf' | awk '$3 > 1048576 {print $0;}'
$ echo '*EXTRA File     78223    C:\foo.pdf' | awk '$3 > 40000 {print $0;}'
*EXTRA File     78223    C:\foo.pdf

Также - если вы используете Unix-подобную пользовательскую среду (например, UnxUtils или Cygwin, если вы работаете в Windows), вы можете использовать find с -size , чтобы получить список файлов напрямую, а затем передать по каналу xargs и делать все, что вы пытаетесь сделать с выбранными файлами.

Общий ответ на ваш вопрос (интересные сравнения и другие операции) действительно awk или bash (с bc) или perl, но конкретный сценарий поддается find.

В чистом Bash:

while read -r _ _ size _; do ((size > 10485760)) && echo "hit"; done < foo.log

Perl можно использовать аналогично awk:

echo '*EXTRA File 78223 C:\foo.pdf' | perl -ane 'print if $F[2] > 40000'