GNU/Linux >> Belajar Linux >  >> Linux

Sed Hapus Karakter Dari Baris Baru?

Setelah beberapa pemrosesan, saya memiliki file input saya seperti di bawah ini.

file1.txt

12345|john|student
43321|jack|professor

78965|alex|lecturer

Saya perlu memproses file di atas lebih lanjut dan jadi saya membutuhkan pemutus baris di akhir baris juga. Saat ini, saya dapat mencapainya seperti di bawah ini.

sed 's/$/|/' file1.txt

Perintah di atas menghasilkan output sebagai,

12345|john|student|
43321|jack|professor|
|
78965|alex|lecturer|

Seperti yang kita lihat, | ditambahkan ke baris kosong juga. Ketika saya mencoba untuk menghapus | karakter lagi dari baris kosong menggunakan perintah di bawah ini,

sed 's/|//g' file1.txt

| karakter semakin dihapus di mana-mana. Bagaimana saya bisa menghapus hanya | dalam baris kosong? Saya harus menjaga baris kosong juga.

Jawaban yang Diterima:

Dari aslinya, Anda dapat menambahkan | ke baris yang tidak kosong:

Menggunakan sed :

sed -e '/^$/!s/$/|/' file

Menggunakan perl :

perl -lpe 's/$/|/ if length' file

Jika Anda ingin menghapus | dari baris yang kosong (dalam versi kedua):

perl -lpe 's/|// if length == 1'

Linux
  1. Bisakah Sed Mengganti Karakter Baris Baru?

  2. Hapus Beberapa Baris Pertama Secara Efisien Dari File Teks?

  3. Bagaimana Cara Menghapus Satu Baris Dari Sejarah?

  1. Hapus Baris Yang Mengandung String Tertentu Dan Baris Berikut?

  2. Menghapus Baris Tertentu dari File di Baris Perintah Linux

  3. Bagaimana cara menggunakan sed untuk menghapus hanya dua baris kosong?

  1. Hapus semua karakter khusus dan huruf besar-kecil dari string di bash

  2. Hapus paket Android SDK dari baris perintah

  3. Hapus baris tertentu dari file riwayat Bash