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'