次のように、CSSファイル内で絶対パスを相対パスに置き換える簡単なコマンドを実行します。
sed -i 's/\/fonts/../fonts/' /Users/sergeybasharov/WebstormProjects/snap/compiled/Content/stylesheets/style.css
これを投げる
sed: 1: "/Users/sergeybasharov/W ...": bad flag in substitute command: 'b'
この単純なスクリプトの何が問題になっていますか?
コマンドでは、s/\/fonts/../fonts/
は-i
オプション(バックアップファイルに使用するサフィックス)のパラメーターとして使用され、引数filenameは編集コマンドとして扱われます。
バックアップファイルの作成を無効にするように指定する必要があります。
sed -i '' ...
あなたの例では:
sed -i '' 's/\/fonts/../fonts/' /Users/sergeybasharov/WebstormProjects/snap/compiled/Content/stylesheets/style.css
コンピューターは愚かで、文脈によって物事を把握していないため、s/
で始まるものが明らかに接尾辞ではなく編集コマンドであることを知ることができません。
sed -i 's/\/fonts/../fonts/'
は有効なsedコマンドではありません。sed -i 's#/fonts#../fonts#'
私は同様の問題を抱えていました。 Macにgsedと呼ばれるsedのGNUバージョンをインストールし、標準のLinux構文を使用して使用できます。
そのためには、Sudo port install gsedを実行して、ポートを使用してgsedをインストールします(お持ちでない場合は、 http://www.macports.org/ で入手してください)。その後、gsed -i 's/old_pattern/new_pattern/g'を実行できます*