Saya memahami basis kode yang besar, dan memimpin spasi putih dan tabulasi tampaknya cukup menjengkelkan. Apakah ada cara untuk menghilangkannya?
grep -R "something" ./
Misalnya, alih-alih:
foo/bar.cpp: qwertyuiosomethingoi
foo/bar/baz.h: 43rfsgsomethingdrfg
bar/bar.cpp: 1234edwssomethingczd
Saya ingin mendapatkan sesuatu seperti:
foo/bar.cpp: qwertyuiosomethingoi
foo/bar/baz.h: 43rfsgdsomethingrfg
bar/bar.cpp: 1234edwssomethingczd
Atau lebih baik:
foo/bar.cpp: qwertyuisomethingooi
foo/bar/baz.h: 43rfsgdrsomethingfg
bar/bar.cpp: 1234edwssomethingczd
command-line
text-processing
grep
sed
Andrew
sumber
sumber
Jawaban:
Buat file uji
menghasilkan warna yang sangat indah :)
output (jalankan untuk mendapatkan warna).
Diuji di
gnome-terminal
,konsole
,terminator
,xterm
sumber
\t
karakter\t
? ... Itu tidak menggunakan\t
untuk pemisah, itu menggunakan $ '\ x01' (hex 01) ... atau maksud Anda sesuatu yang lain?\t
terkemuka dan spasi putih terkemuka\s
[[:space:]]
... Jika Anda hanya ingin mempertimbangkan TAB dan SPACE, dan tidak semua spasi putih, gunakan ini sebagai gantinya:[ \t]
Anda bisa menghilangkannya menggunakan
sed
Itu akan menghapus spasi putih terkemuka dari output
sumber
Dengan asumsi Anda sedang mencari pola
re
(ekspresi reguler dasar) dalam satu file, dan Anda ingin menghapus spasi kosong dari semua baris yang cocok:(sebenarnya, ini mengupas semua spasi putih pertama, dan kemudian mencari polanya, tetapi hasilnya sama)
Sebagai
grep
gantinya pasca-proses output (seperti dalam pertanyaan Anda yang diedit):Pola tersebut
[[:blank:]]*
cocok dengan nol atau lebih banyak spasi atau tab.sumber
--color=always
regexp ini tidak berfungsi: /sed -n '/ pattern / p' file | sed -r "s / \ s + // g"
sumber