以下のようなクラスを説明する行でいっぱいのファイルを取得するクラスのプロジェクトに取り組んでいます
CSC 1010 - コンピュータとアプリケーション
コンピュータとアプリケーション。前提条件: 高校の代数 II。コンピュータの歴史、ハードウェア コンポーネント、オペレーティング システム、アプリケーション ソフトウェア、データ通信。
3.000 クレジット時間
そしてそれを
CSC1010、コンピューターとアプリケーション、3
私が使用した:
sed -n 's/^CSC /CSC/p' courses.txt > practice.txt
出力:
CSC1010 - コンピュータとアプリケーション
CSC1310 - イントロ COMP プログラミング 非専攻 CSC2010
- イントロ コンピュータ サイエンス
CSC2310 - コンピューター プログラミングの プリン CSC2320
- ウェブサイト開発
基金- システムレベルのプログラミング CSC3330 - C++ プログラミング CSC3410 - データ構造 - CTW CSC4110 -組み込みシステム CSC4120 - ロボット工学入門
そして私も使用しました:
sed '/\.000 Course hours//p' courses.txt > courses10.txt
出力:
3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4
私の問題は、sed、awk、または perl のいずれが優れているかを選択しようとしていることです。そのため、これまで sed を使用して、コースのタイトルまたは単位時間数で構成されていない行を削除しました。上で見たように。正規表現を使用してファイルを並べ替え、「CSC」で始まる行または「.000 Course Hours」を含む各行を取得したいと考えていました。その出力を取得した後、sed でコマンドを使用して、CSC で始まる行の末尾から新しい行を削除し、それをコンマに置き換えることができると考えました。その後、バックスラッシュをコンマに置き換えます。ただし、それを行うには、拡張式を使用する必要があると思うので、sed はおそらくアウトになるでしょう。使用を検討していた正規表現は(^CSC |[0-9]\.000)
. では、これを sed、awk、または perl で行うべきでしょうか。あなたが提案する方法を使用する方が効率的である理由について、理由を含めていただければ幸いです。