#linux #bash #shell #scripting
#linux #bash #оболочка #написание
Вопрос:
Я пытаюсь прочитать первую строку текста из файла и отделить первое слово от всех других слов, чтобы я мог сохранить первое слово в переменной, а все остальные слова в массиве, как я мог бы это сделать, ниже приведен мой текущий скрипт с выводами, которые я получаю, и требуемыми выводами.
filename='currentTextFile.txt
firstline=$(head -n 2 $filename)
firstword=${line%% *}
echo "$firstline"
echo "$firstword"`
current input
168820245 firstName LastName DateOfBirth
current output
168820245 firstName LastName DateOfBirth
168820245
desired output
168820245
firstName, LastName, DateOfBirth
Ответ №1:
Вы можете использовать read
встроенный:
read -ra arr < file
# first word
firstWord="${arr[0]}"
# remove 1st word from array
arr=("${arr[@]:1}")
# check output
declare -p firstWord arr
declare -- firstWord="168820245"
declare -a arr='([0]="firstName" [1]="LastName" [2]="DateOfBirth")'
Комментарии:
1. Я пытался реализовать это, но FirstWord пустое и вместо этого является 0-м значением в массиве
2. У меня была опечатка, сейчас исправлена. Проверьте обновленный код и посмотрите рабочую демонстрацию.
3. Другой способ удалить первый элемент из массива — это
unset 'arr[0]'
. Однако результирующий «разреженный массив» требует особого ухода.