私のパスから最初の./とそれに続く/をどのように削除しますか?
今私のコードは次のようになります。
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)を再参照します。