Pertanyaan sed untuk menghapus semua spasi dari garis


Saya ingin menggunakannya sed untuk menghapus semua ruang karakter dari file teks. Saat ini saya menggunakan perintah ini:

sed 's/ //' test.txt > test2.txt

Ini bekerja dalam arti bahwa ia menghilangkan yang pertama ruang karakter setiap baris tetapi tinggalkan sisanya.

Apakah ada cara untuk memberi tahu sed untuk mengulang untuk karakter spasi pada baris sebelum pindah ke yang berikutnya atau apakah itu kasus scripting menjalankan beberapa thoughs pada file yang sama?

Saat ini file ini kecil untuk pengujian tetapi segera ini akan ditingkatkan ke file yang jauh lebih besar sehingga minimum bilas dan pengulangan akan sangat bagus. Ada pikiran apa?

Saat ini saya mendapatkan ini menggunakan perintah di atas:

bruteforce  
allthe kings men  
moneymoney money  
ifi was a rich girl

Ketika apa yang saya inginkan adalah ini:

bruteforce  
allthekingsmen  
moneymoneymoney  
ifiwasarichgirl  

2
2017-07-25 10:20


asal




Jawaban:


Anda harus menggunakan g Bendera (global), yang membuatnya sed bertindak semua kecocokan pola pada setiap baris, bukan kecocokan pertama di setiap baris:

sed 's/ //g' test.txt > test2.txt

6
2017-07-25 10:31



Luar biasa! Apa yang saya lakukan? Apakah ini pengulangan untuk semua instance pada switch garis atau sesuatu? - Tim Alexander
Ya, bendera g membuat pertandingan regex secara global. Tanpa itu, itu hanya cocok dengan yang pertama. - jmz