GNU/Linux >> Belajar Linux >  >> Linux

Ekspresi reguler dengan sed

Masalah utama Anda adalah Anda mencoba menggunakan / sebagai pemisah, saat / juga merupakan karakter yang akan Anda parsing.

Anda harus menggunakan pemisah yang berbeda, seperti pipa. Cocokkan semuanya dan / , lalu gunakan \( dan \) (capture groups) batasi bagian yang ingin Anda ekstrak, dan gunakan \1 , merender grup itu:

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

Anda mungkin membuatnya berfungsi tanpa grup penangkap:hanya menjatuhkan semuanya hingga / terakhir :

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

Mengapa tidak menggunakan basename untuk ini? Misalnya:

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

Linux
  1. Cara menghapus \r karakter dengan sed

  2. Linux GUI Regular Expression File Renamer (dengan substitusi)

  3. Bagaimana cara mengganti karakter dengan sed secara rekursif?

  1. Memanipulasi teks pada baris perintah dengan sed

  2. Isi nol angka menjadi 2 digit dengan sed

  3. rentang nomor ekstrak grep

  1. Perlu Escape Karakter Regex Di Sed Untuk Diinterpretasikan Sebagai Karakter Regex?

  2. Menghapus Semua Komentar C Dengan Sed?

  3. Definisi Ekspresi Reguler?