Ganti semua spasi putih dengan koma dalam file teks

10

Saya perlu mengganti semua spasi putih di dalam teks saya dengan koma. Saat ini saya menggunakan baris ini tetapi tidak berfungsi: Saya mendapatkan sebagai output file teks yang persis sama dengan yang asli:

sed 's/[:blank:]+/,/g' orig.txt > modified.txt

Terima kasih

aneuryzm
sumber
sed 's / [[: blank:]] \ + /, / g'
mug896
@ mug896 bekerja untuk saya di Ubuntu 18.04 Saya membutuhkan tanda kurung ganda dan \ sebelum +
dmontaner

Jawaban:

15

Dengan sed:

sed -e 's/\s\+/,/g' orig.txt > modified.txt

Atau dengan perl:

perl -pne 's/\s+/,/g' < orig.txt > modified.txt

Sunting: Untuk mengecualikan baris baru di perl, Anda dapat menggunakan negatif ganda 's/[^\S\n]+/,/g'atau mencocokkan hanya dengan karakter spasi putih pilihan Anda 's/[ \t\r\f]+/,/g'.

Caleb
sumber
Terima kasih, namun masih ada masalah: Saya tidak ingin mengganti "baris berikutnya \ n" dengan koma, dan perintah dengan perl saat ini sedang melakukannya. Dia sed perintah kamu menulis, masih tidak bekerja.
aneuryzm
Maaf Anda harus melarikan diri dari +operator di sed, saya baru saja memperbarui jawaban saya. Newlines adalah whitepsace dalam perl, jadi Anda harus melakukan kelas whitepsace Anda secara manual jika Anda tidak ingin memasukkannya. Saya menambahkan dua solusi untuk itu juga.
Caleb
13

Menggunakan tr:

tr -s '[:blank:]' ',' <file

Ini akan menggantikan spasi putih horizontal dengan koma. Setiap spasi putih yang berulang hanya akan diganti dengan satu koma.

Steven D
sumber
-1
awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 

Di sini nama file adalah Server .. Ini berisi konten di bawah ini ..

Server1
Server2
Server3

Jika kita menggunakan perintah di atas kita bisa mendapatkan output di bawah ini ..

Server1,Server2,Server3,


[mohramak@oc3246038448 Desktop]$ cat Servers
Server1
Server2
Server3
[mohramak@oc3246038448 Desktop]$ awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 
Server1,Server2,Server3,
[mohramak@oc3246038448 Desktop]$ 
pengguna165585
sumber