GNU/Linux >> Belajar Linux >  >> Linux

Hapus Semuanya Antara Kejadian Pertandingan Terakhir Kedua Dan Kedua?

Saya memiliki string yang ingin saya format. Saya ingin menghapus semuanya di antara ; . kedua dan ; . terakhir kedua .

Masukan

cellular organisms;Eukaryota;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Protostomia;Ecdysozoa;Panarthropoda;Arthropoda;Mandibulata;Pancrustacea;Hexapoda;Insecta;Dicondylia;Pterygota;Neoptera;Endopterygota;Coleoptera;Polyphaga;Cucujiformia;Tenebrionoidea;Tenebrionidae;Tenebrionidae incertae sedis;Tribolium;Tribolium castaneum;  

Keluaran

cellular organisms;Eukaryota;Tribolium castaneum;

Saya telah mencoba menggunakan sed

sed 's/;[^;]*//' <<<"cellular organisms;Eukaryota;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Protostomia;Ecdysozoa;Panarthropoda;Arthropoda;Mandibulata;Pancrustacea;Hexapoda;Insecta;Dicondylia;Pterygota;Neoptera;Endopterygota;Coleoptera;Polyphaga;Cucujiformia;Tenebrionoidea;Tenebrionidae;Tenebrionidae incertae sedis;Tribolium;Tribolium castaneum;"

menghasilkan

cellular organisms;Opisthokonta;Metazoa;Eumetazoa;Bilateria;Protostomia;Ecdysozoa;Panarthropoda;Arthropoda;Mandibulata;Pancrustacea;Hexapoda;Insecta;Dicondylia;Pterygota;Neoptera;Endopterygota;Coleoptera;Polyphaga;Cucujiformia;Tenebrionoidea;Tenebrionidae;Tenebrionidae incertae sedis;Tribolium;Tribolium castaneum;

Jawaban yang Diterima:

Anda dapat melakukannya dengan mudah dengan awk :

awk -F\; '{print $1 ";" $2 ";" $(NF-1) ";" $NF}'

Ini membagi input menggunakan ; (-F\; ), dan mencetak yang pertama ($1 ), kedua ($2 ), kolom kedua dari terakhir dan terakhir ($(NF-1) dan $NF; NF berisi jumlah bidang).

Varian berikut menggunakan kembali pemisah bidang yang ditentukan dalam output:

awk -F\; '{print $1 FS $2 FS $(NF-1) FS $NF}'

Janis menyarankan versi yang lebih baik menggunakan OFS juga:

awk 'BEGIN{FS=OFS=";"} {print $1,$2,$(NF-1),$NF}'

atau, jika Anda ingin menyimpan pemisah sebagai parameter lain:

awk -F\; 'BEGIN{OFS=FS} {print $1,$2,$(NF-1),$NF}'

Linux
  1. Perbedaan Antara Shell Login dan Shell Non-login?

  2. Perbedaan Antara Eot dan Eof?

  3. Perbedaan Antara [0-9], [[:digit:]] Dan D?

  1. Perbedaan Antara Aplikasi Gtk Dan Qt?

  2. Perbedaan Antara Perpipaan Dan Ekspansi Perintah?

  3. Perbedaan Antara Snat dan Masquerade?

  1. Bagaimana Menemukan Kejadian Terakhir Dari Pola Dan Mencetak Semua Baris Setelah Kejadian Terakhir?

  2. perbedaan antara cgroup dan namespace

  3. Bagaimana cara mengekstrak dan/atau menghapus halaman terakhir dari sekumpulan PDF?