使用bash编辑文本文件并显示输出

时间:2013-03-28 03:33:23

标签: linux bash shell unix scripting

我有一个文本文件,其中包含如下所示的课程:

csc 4567 - Computer Programming
This course is about stuff...blah blah blah
4.0000 credit hours

我需要编写一个bash脚本来获取文本文件并提取必要的信息以显示课程编号,课程名称,课程学分。没有空格,只有逗号。课程学分作为整数。

我可以使用命令行提取信息,但在编写bash脚本时我迷失了。我猜我应该使用grep和sed与bash?我不确定。这就是我所拥有的(显然不是正确的)。任何建议将不胜感激。

while read courses.txt
do
  $courseLine=grep -iE '^csc [0-9]{4}'
  $creditHours=grep -iE '^[0-4]'
  $courseNumber=${courseLine#/s/s*}
  $courseName=${courseLine%/s/s*}
  printf "$courseNumber,$courseName,$creditHours"
done

我想要完成的是:阅读文件行 将“csc 4567 - Comp prog”保存为课程 将“4”保存为学分 保存课程中第二个空格左侧的所有内容作为课程编号 保存课程中第二个空格的所有内容作为课程名称 然后显示我想要的输出。

它应该打印csc4567,计算机编程,4

是的,这是作业,但由于我是论坛的新手,所以不会让我这样标记帖子。

1 个答案:

答案 0 :(得分:0)

#/bin/bash
while read line
do
 if [[ $line =~ ^(csc\ [0-9]+)\ \-(.*)+ ]]; then
      a="$a${BASH_REMATCH[1]},${BASH_REMATCH[2]}"
elif [[ $line =~ ^([0-9]+)([0-9\.\,])+\ credit ]]; then
    a="$a,${BASH_REMATCH[1]}\n"
#else
  # a="$a,$line" 
fi

done < "a1.txt"
echo -e $a