-1

我有一个包含如下课程的文本文件:

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,Computer Programming,4

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

4

1 回答 1

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
于 2013-03-28T09:08:28.560 回答