Конвейер с grep и находит числа печати infront результата

От tmux FAQ:

******************************************************************************
* PLEASE NOTE: most display problems are due to incorrect TERM! Before       *
* reporting problems make SURE that TERM settings are correct inside and     *
* outside tmux.                                                              *
*                                                                            *
* Inside tmux TERM must be "screen" or similar (such as "screen-256color").  *
* Don't bother reporting problems where it isn't!                            *
*                                                                            *
* Outside, it must match your terminal: particularly, use "rxvt" for rxvt    *
* and derivatives.                                                           *
******************************************************************************

http://tmux.git.sourceforge.net/git/gitweb.cgi?p=tmux/tmux;a=blob;f=FAQ

2
22.12.2013, 01:43
2 ответа

Числа прибывают из -n опции Вы являетесь передающими к grep. Однако канал, поскольку у Вас есть он, является немного слишком длинным для моего вкуса.

От Вашего примера кажется, что у Вас есть довольно простая структура каталогов. Если у Вас есть GNU, находят, используют -regex (Я не уверен, что это получает мандат POSIX):

find /lag/cnnf/ \
    -maxdepth 3 \
    -regex "abc.*[^0-9]45[^0-9].*db.tar.gz" \
    -newer ./start ! -newer ./end >> sample.txt

Иначе, принимая немного более строгие требования к структуре каталогов (все еще соответствовал бы Вашему примеру):

find /lag/cnnf/ \
    -maxdepth 3 \
    -path "*abc*/45/*db.tar.gz" \
    -newer ./start ! -newer ./end >> sample.txt

Вы могли бы также хотеть рассмотреть использование расширения оболочки - например, в bash необходимо было бы установить опцию оболочки globstar и затем игра с соответствием использованию ** подстановочный знак.

3
27.01.2020, 21:50
  • 1
    Ни один -regex ни -maxdepth POSIX. Они - оба GNU, но теперь также поддерживаются некоторым BSDs. -maxdepth может быть заменен комбинацией -path (недавнее дополнение POSIX) и -prune. –  Stéphane Chazelas 21.12.2013, 23:09

Числа на самом деле производятся (e)greps и -n опция, что означает:

Префикс каждая строка вывода с номером строки на основе 1 в его входном файле.

Если Вы настаиваете на том, чтобы сохранять ту опцию, удаляете сначала два поля, разделенные двоеточием с cut команда:

find /lag/cnnf/ -maxdepth 3 -newer ./start ! -newer ./end \
    | grep -nri abc \
    | egrep '([^0-9]45[^0-9])' \
    | grep -nri "db.tar.gz" \
    | cut -d':' -f3- >> sample.txt

-d символ, используемый в качестве разделителя полей, -f говорит который поля распечатать, в этом случае 3-е все до одного после.

6
27.01.2020, 21:50

Теги

Похожие вопросы