Проблема заключается в следующем У меня есть файл, каждая строка имеет следующую форму:Bash Shell: Infinite Loop
id|lastName|firstName|gender|birthday|joinDate|IP|browser
я хочу, чтобы отсортировать в алфавитном порядке все firstnames в этом файле и распечатать их по одному на каждой строке, но каждое имя только один раз
я создал следующую программу, но по какой-то причине он создает бесконечный цикл:
array1=()
while read LINE
do
if [ ${LINE:0:1} != '#' ]
then
IFS="|"
array=($LINE)
if [[ "${array1[@]}" != "${array[2]}" ]]
then
array1+=("${array[2]}")
fi
fi
done < $3
echo ${array1[@]} | awk 'BEGIN{RS=" ";} {print $1}' | sort
ПРИМЕЧАНИЕ
if [ ${LINE:0:1} != '#' ]
: эта команда используется, потому что есть комментарии в файле, который я не хочу, чтобы напечатать$3
: имя файлаarray1
: используется для всех раздельных имен
Я не вижу никакого способа, которым может быть бесконечный цикл. 'while read' остановится, когда он дойдет до конца файла. – Barmar
Эта команда 'awk' может быть заменена на' tr '' '\ n'' – Barmar
, я не вижу этого, но это то, что на самом деле происходит. Попробуйте запустить его, если хотите. – Clabis