GNU/Linux >> Belajar Linux >  >> Ubuntu

Bagaimana Cara Mengganti Semua String Dalam File Yang Dimulai Dengan Beberapa Awalan?

Contoh:

1:20 2:25 3:0.432 2:-17 10:12

Saya ingin mengganti semua string yang dimulai dengan 2: ke 2:0 .

Keluaran:

1:20 2:0 3:0.432 2:0 10:12

Jawaban yang Diterima:

Menggunakan sed :

sed -E 's/((^| )2:)[^ ]*/\10/g' in > out

Juga, seperti yang terinspirasi oleh jawaban souravc, jika ada tidak peluang 2: substring setelah awal string bukan berisi 2: . terkemuka substring (mis. ada tidak peluang 1:202:25 string, yang akan diganti oleh perintah singkat berikut menjadi 1:202:0 ), perintahnya mungkin disingkat menjadi ini:

sed -E 's/2:[^ ]*/2:0/g' in > out

Perincian Perintah #1 / #2 :

  • -E :membuat sed menafsirkan pola sebagai pola ERE (Extended Regular Expression);
  • > out :mengalihkan stdout untuk out;

sed perincian perintah #1 :

  • s :menegaskan untuk melakukan substitusi
  • / :memulai pola
  • ( :memulai grup penangkap
  • ( :mulai mengelompokkan string yang diizinkan
  • ^ :cocok dengan awal baris
  • | :memisahkan string kedua yang diizinkan
  • :cocok dengan karakter
  • ) :berhenti mengelompokkan string yang diizinkan
  • 2 :cocok dengan 2 karakter
  • : :cocok dengan : karakter
  • ) :menghentikan grup penangkap
  • [^ ]* :cocok dengan sejumlah karakter yang bukan
  • / :menghentikan pola / memulai string pengganti
  • \1 :backreference diganti dengan grup penangkap pertama
  • :menambahkan karakter
  • / :menghentikan string pengganti / memulai flag pola
  • g :menegaskan untuk melakukan substitusi secara global, yaitu mengganti setiap kemunculan pola pada baris

sed perincian perintah #2 :

  • s :menegaskan untuk melakukan substitusi
  • / :memulai pola
  • 2 :cocok dengan 2 karakter
  • : :cocok dengan : karakter
  • [^ ]* :cocok dengan sejumlah karakter yang bukan
  • / :menghentikan pola / memulai string pengganti
  • 2:0 :menambahkan 2:0 string
  • / :menghentikan string pengganti / memulai flag pola
  • g :menegaskan untuk melakukan substitusi secara global, yaitu mengganti setiap kemunculan pola pada baris

Ubuntu
  1. Ganti Baris Baru Dengan Nul?

  2. Bagaimana Cara Mengeluarkan File &Mengabaikan Baris Yang Dimulai Dengan "?"?

  3. Bagaimana Menyembunyikan File Dengan Ekstensi Tertentu?

  1. Cara Menginstal File deb di Ubuntu (dengan Contoh)

  2. Bagaimana Cara Mengganti String Dalam File?

  3. tr perintah - cara mengganti string \n dengan baris baru yang sebenarnya (\n)

  1. Bagaimana Mengganti Grub Dengan Burg?

  2. Bagaimana Cara Mengaitkan Semua Jenis File Dalam Wine Dengan Aplikasi Aslinya yang Sesuai?

  3. Bagaimana Cara Membuka File .8 Dengan Man?