Вот мой файл данных под названием:
bblack|Black|Brian|P|5|sun
lbanas|Banas|Kerry|S|5|mercury
dholder|Holder|David|S|5|venus
dives|Ives|David|W|5|earth
slambert|Lambert|Scott|S|5|mars
rtaylor|Taylor|Rich|S|5|jupiter
dtempleman|Templeman|Daniel|W|5|saturn
vtrimboli|Trimboli|Vincent|S|5|uranus
swalker|Walker|Steve|W|5|neptune
szemanek|Zemanek|Steven|W|5|pluto
А вот мой скрипт
#!/bin/bash
echo "USER_ID LAST_NAME FIRST_NAME JOB OLD_NICE PREFERRED_PASSWORD"
while read IN_RECORD
do
USER_ID=`echo $IN_RECORD | cut -d'|' -f1`
LAST_NAME=`echo $IN_RECORD | cut -d'|' -f2`
FIRST_NAME=`echo $IN_RECORD | cut -d'|' -f3`
JOB=`echo $IN_RECORD | cut -d'|' -f4`
OLD_NICE=`echo $IN_RECORD | cut -d'|' -f5`
PREFERRED_PASSWORD=`echo $IN_RECORD | cut -d'|' -f6`
FULL_NAME="$FIRST_NAME $MIDDLE. $LAST_NAME"
echo "$USER_ID $LAST_NAME $FIRST_NAME $JOB $OLD_NICE $PREFERRED_PASSWORD"
if [ "$JOB" = "P" ]
then
sudo nice -n3 [ $USER_ID,$LAST_NAME,$FIRST_NAME,$JOB,$OLD_NICE,$PREFERRED_PASSWORD ]
echo "NEW_NICE = 3"
elif [ "$JOB" = "S" ]
then
sudo nice -n6 [ $USER_ID,$LAST_NAME,$FIRST_NAME,$JOB,$OLD_NICE,$PREFERRED_PASSWORD ]
echo "NEW_NICE = 6"
else
sudo nice -n7 [ $USER_ID,$LAST_NAME,$FIRST_NAME,$JOB,$OLD_NICE,$PREFERRED_PASSWORD ]
echo "NEW_NICE = 7"
fi
if [ -z "$(getent passwd $USER_ID)" ];
then
sudo useradd -m -c "$FULL_NAME" -p $(echo $P4ssw0rd | openssl passwd -1 -stdin) $USER_ID
MESSAGE="$USER_ID created"
echo "$USER_ID created"
else
MESSAGE="$USER_ID already setup "
echo $MESSAGE
fi
done < test3_data.txt > hamd.txt
Вот желаемый вывод. Я пробовал использовать awk разными способами, но я запутался. Пожалуйста, помогите.
Никто не ответил, хотя вопрос был отклонён - без объяснения причин.
Но я могу предположить: хотя вы указали свои входные данные и желаемый результат (простой текст лучше, чем скриншот, но это относительно незначительная деталь), вы не дали никаких конкретных указаний на то, что вы пробовали. Хотя вы говорите: "Я пробовал использовать awk разными способами, но я запутался", было бы полезно увидеть некоторые подробности.
Поэтому, пожалуйста, дайте нам знать, что вы пробовали и что, по вашему мнению, не так.
При этом я немного продвину разговор, сказав следующее: модель, которой вы придерживаетесь, я вижу довольно часто, а именно: входной парсинг, обработка (nicing, создание аккаунта) и выходное форматирование смешиваются в одном и том же вопросе.
Это опасная парадигма. Если у вас есть один сценарий awk, выполняющий все это, то, например, вам придется заново выполнять операции со счетами каждый раз, когда вы захотите проверить красивое форматирование вывода.
Поэтому, хотя я призываю вас показать нам часть вашего кода, я также призываю вас иметь три сценария: один, который анализирует входные данные и решает, какие действия предпринять; один, который выполняет эти действия; один, который, учитывая результаты, красиво печатает результаты. Каждый из них может принимать некоторые входные данные и писать на стандартный вывод. Для производства вы можете передавать три команды одну другой. Для тестирования вы можете вызывать каждую из них отдельно. Если вы сделаете это, я думаю, вы обнаружите, что проблема стала гораздо более решаемой.