这应该是一个简单的解决方法,但目前我无法完全理解它。
我有一个名为的逗号分隔文件my_course
,其中包含课程列表以及有关它们的一些信息。
我需要获取有关最后两个字段的用户输入并相应地更改它们。
每个字段的构造如下:
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
我得到了 3 件事的用户输入:Course Number
、Status (0 or 1)
和Grade (A,B,C,N/A)
到目前为止,我已经尝试匹配包含课程编号的行并更改最后两个字段。我还没有打算弄清楚如何使用 sed 修改最后两个字段,所以我正在使用这种可怕的 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 个字段。我尝试删除最后两个字段并附加状态和等级的新值,但这对我不起作用。
注意:我已经完成检查以确保用户输入有效数据。