これは簡単な修正であるはずですが、現時点では頭を悩ませることはできません。
と呼ばれるコンマ区切りのファイルmy_course
があり、コースのリストとそれらに関する情報が含まれています。
最後の 2 つのフィールドについてユーザー入力を取得し、それに応じて変更する必要があります。
各フィールドは次のように構成されます。
CourseNumber,CourseTitle,CreditHours,Status,Grade
サンプルファイル:
CSC3210,COMPUTER ORG & PROGRAMMING,3,0,N/A
CSC2010,INTRO TO COMPUTER SCIENCE,3,0,N/A
CSC1010,COMPUTERS & APPLICATIONS,3,0,N/A
Course Number
、Status (0 or 1)
、およびの 3 つの項目に対するユーザー入力を取得します。Grade (A,B,C,N/A)
これまでのところ、コース番号を含む行を照合し、最後の 2 つのフィールドを変更しようとしました。sed を使用して最後の 2 つのフィールドを変更する方法を理解しようとしていなかったので、この恐ろしいごちゃ混ぜの awk と sed を使用しています。
temporary=$(awk -v status=$status -v grade=$grade '
BEGIN { FS="," }; $(NF)=""; $(NF-1)="";
/'$cNum'/ {printf $0","status","grade;}' my_course)
sed -i "s/CSC$cNum.*/$temporary/g" my_course
ここで私が直面している問題は、コース タイトルのフィールド数が 1 から 4 の範囲である可能性があるため、最初の n フィールドを簡単に印刷できないことです。最後の 2 つのフィールドを削除して、ステータスとグレードの新しい値を追加しようとしましたが、うまくいきません。
注: ユーザーが有効なデータを入力したことを確認するために、既にチェックを行っています。