塗りつぶしオプションを持ついくつかのレコード(列)を出力するために、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を試してみましたが、私は迷子になりました」と言っている間、いくつかの詳細を知っておくと便利です。

したがって、あなたが何をしようとしたのか、そして何が問題だと思うのかを他の人に教えてください。

つまり、次のように会話を進めます。ここに従うパターンは、私がよく見るパターンで、入力解析、処理(ニース処理、勘定科目作成)、および出力書式設定が同じ問題に混在して表示される場合です。

これは危険なパラダイムです。たとえば、これらすべてを実行するawkスクリプトがある場合は、きれいな印刷出力形式をテストしたいときはいつでもアカウントを再実行する必要があります。

したがって、いくつかのコードを表示しながら、3つのスクリプトを使用することをお勧めします。 1つは、入力を解析し、どのアクションを実行するかを決定するスクリプトです。与えられた結果に基づいてタスクを実行する人は結果をきれいに印刷します。それぞれはいくつかの入力データを取り出し、標準出力に書き込むことができます。生産のために、3つのパイプを次のパイプに接続できます。テストのために各項目を個別に呼び出すことができます。これにより、問題を解決するのが簡単になると思います。

関連情報