Назначение переменной из файла, разделенной разделителем

У меня есть текстовый файл с данными, указанными ниже, разделенными разделителем:

1000:Tom:user1 1002:Jerry:user2 1003:Victor:user3 1004:Jason:user4 

Мне нужно запустить цикл while (любой цикл) для извлечения данных из первой строки и назначить переменную, как показано ниже:

 uid:1000 username:Tom userid:user1 

Я знаю, что мы можем использовать awk, но я не настолько разбираюсь в использовании awk и не могу найти много разрешения. Если есть другой способ сделать это, пожалуйста, поделитесь этим со мной. Этот скрипт должен иметь возможность собирать данные до конца «данных» файла. Я могу сделать эту часть, как только смогу сделать для первой линии.

3 Solutions collect form web for “Назначение переменной из файла, разделенной разделителем”

Если вы не хотите использовать awk вы можете сделать что-то вроде

 while IFS=: read -r uid username userid; do printf "user:%s\nusername:%s\nuserid:%s\n" "$uid" "$username" "$userid"; done <file user:1000 username:Tom userid:user1 user:1002 username:Jerry userid:user2 user:1003 username:Victor userid:user3 user:1004 username:Jason userid:user4 

IFS – это разделитель входных данных, устанавливая его так : вы можете напрямую прочитать переменные из файла.

Смотрите следующий скрипт awk:

 user@host:~# awk -F: '{printf "uid:%s\nusername:%s\nuserid:%s\n", $1,$2,$3}' file uid:1000 username:Tom userid:user1 uid:1002 username:Jerry userid:user2 uid:1003 username:Victor userid:user3 uid:1004 username:Jason userid:user4 
 for i in `cat text_file`;do uid=`echo "$i"|cut -d: -f1`; username=`echo "$i"|cut -d: -f2`; userid=`echo "$i"|cut -d: -f3`; echo "uid=$uid,username=$username,userid=$userid";done uid=1000,username=Tom,userid=user1 uid=1002,username=Jerry,userid=user2 uid=1003,username=Victor,userid=user3 uid=1004,username=Jason,userid=user4 

Таким образом, у вас есть переменные $uid , $username , $userid для использования.

Это хорошо?

  • Попытка создать cron для Rsync, затем tar папку
  • Множественный оператор, который включает специальные символы, используя при возникновении ошибок
  • Как написать сценарий sed для удаления чисел из строки?
  • Различные результаты при использовании скрипта или кода вставки
  • Сценарий оболочки: если несколько условий
  • Как я могу получить вывод `ls -l` для ссылки рекурсивно, пока не достигнут исходный файл?
  • Как удалить все, кроме последнего вхождения строки?
  • Команда tar генерирует ошибку в сценарии оболочки
  • как извлечь некоторые строки в файл данных по сравнению с другим файлом данных? (слияние)
  • Как удалить \ n между выходами двух команд эха?
  • Shell Script: захватывать строку в середине текста, иногда в начале
  • Выполнить все файлы в списке
  • Linux и Unix - лучшая ОС в мире.