Я нуждаюсь в помощи, пишущий сценарий, который читает имена из файла

Мой файл имеет 100 строк. Я должен циклично выполниться по всем строкам и получить полное имя спортсменов.

Каждый формат строки похож на это, но с различными спортсменами:

vada359,Valerie Adams,Women,Athletics,AT,new-Zealand

Мне приходится нелегко придумывающий сценарий, который читает строку и создает новых пользователей с useradd команда - но я должен только получить полное имя.

Можно ли помочь мне на идеях о том, как я могу сделать это?

1
задан 13 September 2016 в 09:41

1 ответ

Так как это - в значительной степени вопрос о домашней работе, я не дам точный ответ. Однако вот некоторые идеи, которые могут привести Вас к решению.

Много инструментов позволяют разделять текст на столбцы или "поля" в определенных символах. В Вашем случае Вы хотите разделить текст в запятых и поле № 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

2
ответ дан 7 December 2019 в 13:41

Другие вопросы по тегам:

Похожие вопросы: