grep также отображает результаты, которые отличаются на 1 символ?

В обоих сценариях вы используете cutдля файла, имя которого считывается из файла viagens.txt. Вы должны получить ошибку No such file or directoryот обоих скриптов (не забывайте всегда включать любые ошибки в вопрос ).

Вместо:

#!/bin/bash

fich=viagens.txt

if [ ! -f "$fich" ]; then
    echo "Ficheiro nao existe" >&2
    exit 1
fi

cut -d : -f 2 <"$fich" |
while read data; do
    printf 'Data read: %s\n' "$data"
done

cut -d : -f 2вернет второе:-поле с разделителями из ввода в cut.

Или, если вы просто хотите вывести столбец:

#!/bin/bash

fich=viagens.txt

if [ ! -f "$fich" ]; then
    echo "Ficheiro nao existe" >&2
    exit 1
fi

cut -d : -f 2 <"$fich"
3
05.01.2021, 21:23
1 ответ

Используйте Approximate Grep(agrep)с флагом -#, где #— допустимое количество несоответствий.

$ agrep    "super_duper_utralong_name" <<< super_duper_ultralong_name
$ agrep -1 "super_duper_utralong_name" <<< super_duper_ultralong_name
super_duper_ultralong_name

Дополнительные параметры см. в руководстве Agrep .

4
18.03.2021, 22:38

Теги

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