GNU/Linux >> Belajar Linux >  >> Linux

Cara Menggabungkan Beberapa Baris Menjadi Satu dalam Satu File di Linux

Dalam tutorial hari ini tentang manajemen file Linux, kita akan melihat pendekatan yang valid untuk menggabungkan beberapa baris dalam file menjadi satu baris. Pada akhir artikel ini, Anda akan menambahkan beberapa tonggak komputasi ke pengalaman manajemen file Linux Anda.

[ Anda mungkin juga menyukai:Cara Menggabungkan Dua File Teks di Linux ]

Kemungkinan/peluang bagi pengguna yang mengeksploitasi sistem operasi Linux melalui antarmuka baris perintah terus tidak terbatas. Salah satu kemungkinan tersebut adalah memanipulasi file multi-baris menjadi file satu baris melalui serangkaian perintah Linux. Tujuan untuk menggabungkan baris tersebut dapat sesederhana kebutuhan untuk menambahkan pembatas kustom ke file yang ditargetkan.

Pernyataan Masalah

Karena tutorial ini akan berfokus pada penggabungan beberapa baris menjadi satu baris pada file yang ditargetkan, kita perlu membuat file semacam itu untuk tujuan referensi dan mengisinya dengan beberapa data multi-baris.

$ sudo nano sample_file.txt

Sesuai tangkapan layar di atas, kita berurusan dengan file (sample_file.txt ) dengan enam baris, dan ada tiga pendekatan untuk menggabungkan enam baris ini:

  1. Tanpa pembatas:Saya Sangat MenyukaiLinuxShellTipsTutorials!
  2. Dengan pembatas karakter tunggal:I Genuinely,Love,Linux.Shell,Tips,Tutorials!
  3. Dengan beberapa pembatas karakter:Saya Sungguh;Cinta;Linux;Shell;Tips;Tutorial!

Cara Menggabungkan Beberapa Baris Menjadi Satu Baris dalam File

Mari kita lihat tiga pendekatan ini untuk menggabungkan beberapa baris dalam file menjadi satu baris di Linux.

1. Menggunakan Perintah sed

Kekuatan sed utilitas baris perintah pemrosesan teks akan memungkinkan kita untuk menggabungkan enam baris dalam file teks sampel kita dengan menangani tiga pendekatan yang dibahas di atas dengan mengacu pada sintaks kode yang hampir sama.

Tanpa Pembatas:

$ sed ':a; N; $!ba; s/\n//g' sample_file.txt  

Dengan Spasi:

$ sed ':a; N; $!ba; s/\n/ /g' sample_file.txt 

Dengan Pembatas Karakter Tunggal mis. koma:

$ sed ':a; N; $!ba; s/\n/,/g' sample_file.txt 

Dengan Pembatas Beberapa Karakter mis. titik koma dan spasi putih:

$ sed ':a; N; $!ba; s/\n/; /g' sample_file.txt 

2. Menggunakan Perintah awk

Linux awk command adalah alat baris perintah pemrosesan teks terkemuka lainnya. Pendekatannya untuk memecahkan masalah multi-baris kami ke satu baris dapat dianalisis dan diimplementasikan dengan cara berikut:

Tanpa Pembatas:

$ awk -v d="" '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

Dengan Spasi:

$ awk -v d=" " '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

Dengan Pembatas Karakter Tunggal mis. koma:

$ awk -v d="," '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

Dengan Pembatas Beberapa Karakter mis. titik koma dan spasi putih:

$ awk -v d="; " '{s=(NR==1?s:s d)$0}END{print s}' sample_file.txt

3. Menggunakan Perintah tempel

Tempel perintah hanya ideal untuk menggabungkan beberapa baris tanpa pembatas, dengan spasi, dan dengan satu karakter pembatas. Utilitas ini berada di bawah GNU Coreutils paket maka ketersediaannya di semua distribusi OS Linux.

Tanpa Pembatas:

$ paste -sd '' sample_file.txt

Dengan Spasi:

$ paste -sd ' ' sample_file.txt

Dengan Pembatas Karakter Tunggal mis. garis bawah:

$ paste -sd '_' sample_file.txt

Garis bawah di akhir (_) dapat dihapus dengan menyalurkan perintah tempel ke perintah sed:

$ paste -sd '_' sample_file.txt | sed 's/_$/\n/'

Pendekatan ini tidak ideal dengan beberapa pembatas karakter, misalnya titik koma dan spasi putih karena keluaran tidak beraturan seperti berikut:

$ paste -sd '; ' sample_file.txt

4. Menggunakan Perintah tr

Perintah tr juga ideal untuk menggabungkan beberapa baris tanpa pembatas, dengan spasi, dan dengan satu karakter pembatas.

Tanpa Pembatas:

$ tr -d '\n' < sample_file.txt

Dengan Spasi:

$ tr '\n' ' ' < sample_file.txt

Dengan Pembatas Karakter Tunggal mis. koma:

$ tr '\n' ',' < sample_file.txt	

Pipa output ke perintah sed untuk menghilangkan koma tambahan.

$ tr '\n' ',' < sample_file.txt | sed 's/,,$/\n/'

Kami telah berhasil mempelajari cara menggabungkan beberapa baris menjadi satu baris dalam satu file di Linux.


Linux
  1. Bagaimana cara menggabungkan beberapa baris nama file menjadi satu dengan pembatas khusus?

  2. Cara menambahkan konten dari banyak file ke dalam satu file

  3. Bagaimana cara mengomentari banyak baris dalam file konfigurasi Linux?

  1. Bagaimana Cara Menambahkan Beberapa Baris Ke File?

  2. Cara Menghitung baris dalam file di UNIX/Linux

  3. Linux - bagaimana memformat banyak sistem file dalam satu file?

  1. Mengubah banyak baris menjadi satu baris yang dipisahkan koma

  2. Bagaimana cara membagi satu file teks menjadi beberapa file *.txt?

  3. Bagaimana cara gzip banyak file menjadi satu file gz?