-1

次のようなコースのテキスト ファイルがあります。

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

テキスト ファイルを取得し、コース番号、コース名、コース単位時間を表示するために必要な情報を抽出する bash スクリプトを作成する必要があります。間にスペースはなく、カンマのみです。整数としてのコース単位時間。

コマンドラインを使用して情報を抽出することはできますが、bash スクリプトを作成するときに迷ってしまいます。bashでgrepとsedを使用する必要があると思いますか?わからない。これは私が持っているものです (これは明らかに正しいとは限りません)。アドバイスをいただければ幸いです。

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」を保存します。コース行の 2 番目のスペースの左側のすべてをコース番号として保存します。 course line をコース名として使用すると、目的の出力が表示されます。

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 に答える