だからSED.sedというスクリプトがあります。このスクリプトは、車のデータデータセットを処理するために作成されました。まず、スクリプトに必要な機能を説明したいと思います。 3つのことをしたい
- 年を数十年に変えます。セットには1970年から89年までの自動車のみが含まれているため、年を適切な10年に置き換えました。はい(1972年と1974年は1970年代に置き換えられました)
- 自動車メーカーとモデルは二重引用符のペアで表示されます。私はこれを一重引用符に変え、ブランドとモデルを分離しました。したがって、「Honda civic lx」と「audi 500s(ディーゼル)」は「honda」「civic lx」と「audi」「500s(ディーゼル)」になります。
- データ損失がある場合、一部のデータ行に「?」が含まれます。データセットからこの行を削除したいと思います。
つまり、私のスクリプトは次のようになります
s/"([^" ]+) +([^"]+)"$/'"'\1' '\2'/"
s/7[0-9]( )/70s/g
s/8[0-9]( )/80s/g
/?/d
次に、このスクリプトを次のようにsedコマンドに渡しました。
sed -E -i -f SED.sed auto-mpg.data
これにより、次のエラーが発生します。
sed: file SED.sed line 1: unknown option to `s'
答え1
答えを見つけました。"
問題を正確に見つけるために、行4からエラーメッセージを生成する行1の最後から削除しました。問題は、?
シンボルのある4行目で発生します。前にバックスラッシュを追加しましたが、スクリプトは実行されませんでした。