這應該是一個簡單的修復,但目前我無法將它包裹在它的周圍。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