• ベストアンサー

スラッシュ"/"を削除したい

ファイル名に"/"(スラッシュ)が入っているので、削除したいのですが、どうすればいいのでしょうか? sed を使って消そうと思ったのですが、文字を括るのに"/"を使うので、うまくいきませんでした。 まず、以下のコマンドでファイル名をaa.lst に入れ、その中に入っているスラッシュを消そうとしています。 ls > aa.lst

質問者が選んだベストアンサー

  • ベストアンサー
  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.3

「文字を括るのに"/"を使うので」 これをやめればいいだけだと思います。 「/」を使うのはただの慣例に過ぎません。 No2.さんの例をお借りして書き直せばこんな感じになります。 sed 's|/||g' aa.lst もちろん「\」でエスケープしても対応可能ですが、こちらのほうがすっきり見やすくかけると思います。 「s」のあとの文字を区切り文字と判断し、それがセットで使われていれば問題ありません。極論を言うと以下のようにも書けます。 sed 'ss/ssg' aa.lst sed 's"/""g' aa.lst ただ、何のことやら分かりにくくなってしまうので「/」か「|」の使用をお勧めします。

ichigo61
質問者

補足

スラッシュは慣例なんですね。 わかりやすい回答ありがとうございます。 助かりました。

その他の回答 (2)

回答No.2

sedで"/"を文字列として扱う場合には、\(←半角バックスラッシュ。¥(←これは全角だけど、実際には半角の円マーク))でエスケープすれば大丈夫です。 たとえば、 % sed 's/\//:/g' aa.lst とすると、aa.lstの中の「/」が「:」に置換されます。 今回の場合は/を消したい訳ですから、 % sed 's/\///g' aa.lst で行けると思います。 以上、ご参考まで。

ichigo61
質問者

補足

バックスラッシュが、スラッシュになるんですね。 ご回答ありがとうございます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

うん? そもそも, どうやったら「ファイル名に"/"(スラッシュ)が入っている」という状態になるんでしょうか?

関連するQ&A

専門家に質問してみよう