我有一个文本文件,其中包含如下所示的课程:
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
是的,这是作业,但由于我是论坛的新手,所以不会让我这样标记帖子。
答案 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