3

私にとってsedの使用は本当に珍しいです。私は持っているのに慣れてい's/pattern1/pattern2/g'ます。

誰かがそれを説明するのを手伝ってもらえますか?
入力文字列は次のようになります。

path1/path2/path3/fileA path1/path2/path3/fileB path1/path2/path3/fileC

出力はfileA fileB fileCです。

4

1 に答える 1

13

これは、区切り記号として「/」の代わりに「,」を使用した代替コマンドです。おそらく、パターンに「/」があるためです。と同等です

s/^.*\///

これは、行頭から最後のスラッシュまですべてを削除することを示しています。

「s」を使用すると、次の文字が区切り文字として使用されます。したがって、次のように書くこともできます

s!^.*/!!
s@^.*/@@

別のセパレーターを使用すると、パターン内でセパレーターのインスタンスをエスケープする必要がなくなります。

入力例:

パス1/パス2/パス3/ファイルA

' ^' は '文字列の先頭から' を意味し、' .*' は '任意に一致' を意味します。' .*/' は、'/' が後に続く限り、貪欲に何でも一致させようとします。貪欲なので、それには他のスラッシュも含まれます。一致しpath1/path2/path3/ます。置換パターンは ''、つまり何もないため、文字列の先頭から最後の '/' までのすべてを効果的に削除し、fileA

TL;DR: 「パス情報を削除し、ファイル名だけを残す」という意味です

于 2013-11-05T08:25:36.233 に答える