我正在尝试将 printf 语句写入脚本中以输出一些带有填充选项的记录(列)

我正在尝试将 printf 语句写入脚本中以输出一些带有填充选项的记录(列)

这是我的数据文件,名为:

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 但我迷失了。请帮忙。

答案1

尽管这个问题被否决了,但没有人回答——没有任何明确的理由。

但我可以猜测:虽然您已经给出了输入和所需的输出(纯文本比屏幕截图更好,但这是一个相对较小的细节),但您没有给出任何具体说明您所尝试的内容。虽然您说“我尝试过以不同的方式使用 awk,但我迷失了”,但了解一些细节会很有用。

因此,请让我们其他人知道您尝试过什么以及您认为其中存在哪些问题。

也就是说,我将通过这样说来推动对话:您在这里遵循的模式是我经常看到的模式,即输入解析、处理(nicing、帐户创建)和输出格式化出现混合在同一个问题中。

这是一个危险的范例。如果您有一个 awk 脚本完成所有这些操作,那么 - 例如 - 每次您想要测试打印精美的输出格式时,您都需要重新执行帐户操作。

因此,虽然我鼓励您向我们展示一些代码,但我也鼓励您使用三个脚本:一个用于解析输入并决定采取什么操作;另一个用于分析输入并决定要执行的操作。执行动作的人;给定结果后,它会漂亮地打印结果。每个都可以获取一些输入数据并写入标准输出。对于生产,您可以将三个管道连接到下一个。为了进行测试,您可以单独调用每一个。如果你这样做,我想你会发现问题更容易处理。

相关内容