这应该是一个简单的修复,但目前我无法将它包裹在它的周围。Bash脚本使用变量替换文本文件中的两个字段
我有一个逗号分隔的文件,名为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个字段。我尝试删除最后两个字段,并添加状态和成绩的新值,但这不适合我。
注意:我已经完成检查以确保用户输入有效数据。
+1的回答,但不要用全大写为您的变量名 - 这是对于像NR,OFS,文件名等 – 2013-03-27 14:08:15
@EdMorton内置变量 - 你一如既往的正确!更新 – 2013-03-27 14:28:30