GNU/Linux >> Belajar Linux >  >> Linux

sed - cara melakukan grup regex menggunakan sed

Inilah yang dimaksud Birei dan Thor:

sed -r "s/([a-z]*-[a-z]*-)([0-9]*-)([a-z]*-)(.*)/\1\n\2\n\3\n\4/"

Keluaran:

test-artifact-
201251-
balbal-
0.1-SNAPSHOT.jar

Anda harus keluar dari tanda kurung ke ekspresi grup:

\([a-z]*-[a-z]*-\)\([0-9]*-\)\([a-z]*-\)\([.]*SNAPSHOT.jar\)

Dan gunakan dengan \1 , \2 , dll.

EDIT :Perhatikan juga tepat sebelum SNAPSHOT [.] itu tidak akan cocok. Di dalam tanda kurung . adalah literal. Seharusnya [0-9.-]*


sebenarnya untuk string biasa itu, awk bisa menyelamatkan Anda dari pengelompokan. :)

Anda cukup memberikan nomor indeks bagian yang Anda inginkan:

awk 'BEGIN{FS=OFS="-"}{print $1,$2,$5,$6}' 

keluaran:

kent$  echo "test-artifact-201251-balbal-0.1-SNAPSHOT.jar"|awk 'BEGIN{FS="-";OFS="-"}{print $1,$2,$5,$6}'
test-artifact-0.1-SNAPSHOT.jar

Linux
  1. Bagaimana Cara Mengganti Nama Banyak File Menggunakan Regex?

  2. Bagaimana cara menghapus folder menggunakan regex dari terminal Linux

  3. Cara menghapus karakter non-ascii menggunakan sed

  1. Bagaimana cara memasukkan teks ke baris pertama file menggunakan sed?

  2. Bagaimana cara mendapatkan teks halaman menggunakan wget tanpa html?

  3. Mengapa sed tidak menggunakan mode regex yang diperluas secara default?

  1. Bagaimana Cara Mengganti String Dalam File?

  2. Bagaimana Cara Ssh Ke Server Menggunakan Server Lain??

  3. Bagaimana cara mengubah file di tempat menggunakan awk? (seperti halnya sed -i)