Поиск файла на основе диапазона данных

Вы также можете использовать параметр -X с compgen :

_grcat() {
  local word
  COMPREPLY=()
  if [ 1 -eq "$COMP_CWORD" ]; then
    pushd /etc/grcat &>/dev/null || return 1
    word="${COMP_WORDS[COMP_CWORD]}"
    local filterpat='README'
    COMPREPLY=($(compgen -f -X "$filterpat" -- "$word"))
    popd &>/dev/null
  fi
} 
complete -F _grcat grcat

compgen принимает большинство тех же параметров, что и complete , за исключением -p и -r .

compgen также генерирует результат, записывает совпадения в стандартный вывод. complete сохраняет правила только для будущего использования.

1
13.04.2017, 15:36
1 ответ

Следующий скрипт должен быть протестирован на гораздо большего объема данных (более 4 строк) для проверки правильного выполнения этого оператора , если (((([1] <$ 3 && $ 4 <= [2]) || (A [1] <= $ 3 && $ 4

awk '
    BEGIN{SUBSEP="-"}
    {     if (($3, $4) in ids)
              ids[$3,$4]=ids[$3,$4] "," $1
          else
              ids[$3,$4]=$1
    } 
    END{  for (rng1 in ids) {
              split (rng1,A,SUBSEP)
              for (rng2 in ids) {
                  split (rng2,B,SUBSEP)
                  if ((A[1]<B[1] && B[2]<=A[2])||(A[1]<=B[1] && B[2]<A[2]))
                      ids[rng2]=ids[rng2] "," ids[rng1]
                  }
              }
          for (rng in ids) {
              for (i=1;i<=split(ids[rng],D,",");i++)
                  a[D[i]]=1
              s=k=""
              n=0
              for (j in a) {
                  k=k s j
                  s=","
                  n++
                  }
              print rng, n, k
              delete a
              }
     }' formatted.file
1
27.01.2020, 23:51

Теги

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