sedを使用して開始と終了を削除する方法は?

sedを使用して開始と終了を削除する方法は?

私のパスから最初の./とそれに続く/をどのように削除しますか?

今私のコードは次のようになります。

sed -i 's/dir2\/file-example.json//' test.sh

次のように印刷されます。

./dir1/

しかし、私はこれが欲しい:

dir1

これにより、最初と最後から./と/を削除し、ディレクトリ名のみを残します。

可能ですか?

ベストアンサー1

正規表現の区切り文字として使用する必要はありませんが、/「別の単一文字」に置き換えることができます。これをエスケープしてください。info sed:

'\%REGEXP%' ('%' は他の単一文字に置き換えることができます。)

 This also matches the regular expression REGEXP, but allows one to
 use a different delimiter than '/'.

代替コマンドではs逃げる必要もありません。努力する

sed -i 's%\./%%; s%/dir2/file-example.json%%;' test.sh

正規表現で点の特別な意味をオフにするには、点もエスケープする必要があります。

「逆参照」を使用すると、はるかに簡単になります。

sed -i 's%\./\(dir1\)/dir2/file-example.json%\1%;' test.sh

これは\1、括弧で囲まれた最初の部分正規表現(ここではdir1)を再参照します。

おすすめ記事