Мой файл имеет 100 строк. Я должен циклично выполниться по всем строкам и получить полное имя спортсменов.
Каждый формат строки похож на это, но с различными спортсменами:
vada359,Valerie Adams,Women,Athletics,AT,new-Zealand
Мне приходится нелегко придумывающий сценарий, который читает строку и создает новых пользователей с useradd
команда - но я должен только получить полное имя.
Можно ли помочь мне на идеях о том, как я могу сделать это?
Так как это - в значительной степени вопрос о домашней работе, я не дам точный ответ. Однако вот некоторые идеи, которые могут привести Вас к решению.
Много инструментов позволяют разделять текст на столбцы или "поля" в определенных символах. В Вашем случае Вы хотите разделить текст в запятых и поле № 2 извлечения. Инструменты, такие как awk, позвольте указывать разделителя полей с -F
опция и поля печати как 1$, 2$, 3$, и т.д. cut
поскольку Старший Фанат упомянул, является другим инструментом для такого задания и может использовать -d
для разделителя полей и -fx
для полей, где x является целым числом.
Извлекая те поля, Вы захотите передать каждого из них к useradd
или лучше adduser
, который является сценарием Perl, специально разработанным для легкого добавления пользователей к системе. Если Вы - вывод каждое имя от предыдущей команды через канал к adduser
, Вы могли бы хотеть использовать что-то как
command1 | xargs adduser
Существует определенная проблема однако - Вы собираетесь быть получением строки с именем и фамилией, разделенной пространством. Типичное имя пользователя Unix сделано как единственная строка, таким образом, я рекомендовал бы отправить извлеченное имя через tr -d ' '
команда, которая удаляет пробелы. Тем путем Вы создадите пользователя ValerieAdams, например. В зависимости от Ваших требований это может или не может быть приемлемо, так рассмотрите требования.
Кроме того, как Kaz Wolfe указал, прописные буквы в имени пользователя не позволяются по умолчанию в adduser, однако возможно использовать --force-badname
флаг согласно ответу karthic87