Jika saya memiliki garis sebagai:
Thhiisss iisss mmyyy nameeee
Saya ingin mencetak ini sebagai:
This is my name
Apa perintah unix untuk ini?
command-line
text-processing
krishna
sumber
sumber
Jawaban:
Dengan
tr
:Penjelasan:
-s
beralih daritr
"meremas" karakter berulang. Seperti yang ditunjukkan, sakelar dapat digunakan dengan serangkaian karakter:a
hinggaz
.sumber
Pada sistem GNU Anda harus menggunakan
sed
atau serupa jika lokal Anda menggunakan karakter multibyte ( seperti yang disarankan jimmij ) karena GNUtr
hanya dapat mereferensikan karakter per byte. Di lokal ASCII Anda dapat menghapus semua duplikat dengantr
:Begitu...
... mencetak ...
Anda juga dapat melakukannya secara selektif dengan merujuk target Anda berdasarkan rentang:
...atau...
... yang berfungsi menjadi hal yang sama, dan yang keduanya mencetak:
... atau penggunaan
[:punct:]
,[:digit:]
,[:lower:]
,[:alpha:]
atau apa pun yang Anda inginkan. Anda juga dapat meniadakan pilihan-c
dengan ...... mencetak ...
sumber
Satu cara dengan
sed
:atau bahkan lebih sederhana:
(Terima kasih Costas dan mikeserv untuk komentar).
sumber
sed 's/\(.\)\1\+/\1/g'
Coba
tr
:sumber