В обоих сценариях вы используете 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"
Используйте 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 .