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

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

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 для использования.

Это хорошо?

  • Вызов скриптов из других скриптов
  • Создание списка файлов, удаление «дубликатов» с различным суффиксом
  • скрипт для копирования каталогов с определенным приращением
  • Как играть простые заметки, такие как звук ding-dang в терминале
  • простой сценарий цикла для построения подсети ipv6
  • Как скрипт с systemd-cgtop?
  • Найти все репозитории git, которые не содержат ни одного из .gitignore и .gitattributes
  • печатать строки со специфическими словами
  • Извлечь файлы с определенным расширением файла и сохранить структуру каталогов?
  • Выполнить команду на нескольких хостах, но только команду печати, если она выполнена успешно?
  • Как безопасно отменить поиск dns на ip в сценарии оболочки
  • Interesting Posts

    Как я могу заставить auditd сообщать ТОЛЬКО правила, которые я указываю с помощью auditctl? (Linux)

    Как я могу заменить ^ I на области вкладок в редакторе vim для .java-файла?

    Данные GPS модема передаются по сети на неправильное устройство

    На следующий день пользователя введена дата – дата +1 день

    Поддерживает ли виртуальный мост Linux VLAN?

    Запуск PHP: невозможно загрузить динамическую библиотеку '/usr/lib64/php/modules/php_mysql.so'

    В GNOME можно перемещать значки из лотка уведомлений на системную панель в верхней части экрана?

    Сценарий оболочки: найдите выделенные программы, если они есть, активируйте его

    Caps_Lock изменен на Multi_key

    Почему mv не может иметь дело с существованием каталога с одним именем в месте назначения?

    Обратные прокси-серверы с несколькими бэкэнд-серверами

    tar.gz извлекал только пустые файлы

    Arch Linux – Подкачка / загрузка

    Как команда diff обрабатывает кеширование?

    Разница между 'ls' и 'echo $ (ls)'

    Linux и Unix - лучшая ОС в мире.