GNU/Linux >> Linux の 問題 >  >> Linux

sed による正規表現

あなたの主な問題は、 / を使用しようとしていることです / の場合、セパレータとして も解析する文字です。

パイプなど、別のセパレータを使用する必要があります。すべてと / に一致 、次に \( を使用します と \) (グループをキャプチャ) 抽出したい部分を区切って \1 を使用 、そのグループをレンダリングします:

echo "yourstring" | sed 's|.*/\([^/]*\)$|\1|'

キャプチャ グループがなくても機能する場合があります。最後の / まですべてをドロップするだけです。 :

echo "yourstring" | sed 's|.*/||'

basename を使用しない理由 このため?例:

for file in *mp3; do basename "$file"; done

Linux
  1. sedを使用してコマンドラインでテキストを操作する

  2. Sedコマンドで一度に複数のパターンを使用する

  3. Sed -i(インプレース編集)で移植性を実現するにはどうすればよいですか?

  1. 正規表現文字として解釈されるために、Sedで正規表現文字をエスケープする必要がありますか?

  2. 正規表現の定義?

  3. sed を使用して区切り文字で文字列を分割する

  1. sed 特定の行にスペースを含む挿入行

  2. sed で \r 文字を削除する方法

  3. 文字を再帰的にsedに置き換える方法は?