GNU/Linux >> Belajar Linux >  >> Linux

Sed Menghapus Semuanya Sampai Dan Termasuk Periode Pertama Jika Ada Lebih dari Satu Periode Pada Baris Itu Dan Lakukan Ini Untuk Seluruh File?

sed hapus semuanya sampai dan termasuk titik pertama jika ada lebih dari satu titik pada baris itu dan lakukan ini untuk seluruh file.

Sebelum tidur:

akamai.com
cdnjs.cloudflare.com
com.cdn.cloudflare.net

Setelah sed:

akamai.com
cloudflare.com
cdn.cloudflare.net

Jawaban yang Diterima:

$ sed '/\..*\./s/^[^.]*\.//' file
akamai.com
cloudflare.com
cdn.cloudflare.net

sed skrip pertama-tama mencocokkan baris yang berisi setidaknya dua titik menggunakan ekspresi reguler \..*\. (bisa juga ditulis [.].*[.] ). Untuk baris yang cocok dengan ini, substitusi yang menghapus semuanya hingga dan termasuk titik pertama dilakukan.

Menggunakan awk , agak bertele-tele dibandingkan dengan yang di atas:

$ awk -F '.' -vOFS='.' 'NF > 2 { n=split($0, a); $0=""; for (i=2;i<=n;++i) $(NF+1)=a[i] } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Di sini, setiap kali ada lebih dari dua bidang yang dibatasi titik, kami membagi baris saat ini menjadi titik-titik, lalu membuat ulang rekaman saat ini dari itu, melewati bidang pertama. 1 di akhir pada akhirnya menyebabkan setiap baris (dimodifikasi atau tidak) untuk dicetak.

awk lebih pendek dengan cara yang sama seperti sed solusi:

$ awk -F '.' 'NF > 2 { sub("^[^.]*\.", "") } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net

Linux
  1. Linux – Uncompress Dan Unarchive File .tar.gz Menggunakan Cat, Tar Dan Gzip Pada Satu Baris Perintah?

  2. Hapus Baris Header Ekstra Dari File, Kecuali Baris Pertama?

  3. Bagaimana Cara Mengubah Panjang Baris Default Untuk Od Dan Hexdump?

  1. Encode Konten File Dan Gema Sebagai Satu Baris?

  2. Bagaimana cara membagi file dan menyimpan baris pertama di setiap bagian?

  3. Saya ingin menunggu deskriptor file dan mutex, apa cara yang disarankan untuk melakukan ini?

  1. Berapa totalnya di baris pertama setelah ls -l?

  2. Cara menyentuh file dan mkdir jika diperlukan dalam satu baris

  3. Menghapus dan menambahkan izin menggunakan notasi numerik pada baris yang sama