sed:私のsedスクリプトに「s」の未知のオプションがあります。

sed:私のsedスクリプトに「s」の未知のオプションがあります。

だからSED.sedというスクリプトがあります。このスクリプトは、車のデータデータセットを処理するために作成されました。まず、スクリプトに必要な機能を説明したいと思います。 3つのことをしたい

  1. 年を数十年に変えます。セットには1970年から89年までの自動車のみが含まれているため、年を適切な10年に置き換えました。はい(1972年と1974年は1970年代に置き換えられました)
  2. 自動車メーカーとモデルは二重引用符のペアで表示されます。私はこれを一重引用符に変え、ブランドとモデルを分離しました。したがって、「Honda civic lx」と「audi 500s(ディーゼル)」は「honda」「civic lx」と「audi」「500s(ディーゼル)」になります。
  3. データ損失がある場合、一部のデータ行に「?」が含まれます。データセットからこの行を削除したいと思います。

つまり、私のスクリプトは次のようになります

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行目で発生します。前にバックスラッシュを追加しましたが、スクリプトは実行されませんでした。

関連情報