Saya memiliki file dengan baris sebagai berikut:
...
... <230948203[234]>, ...
... <234[24]>, ...
..
Saya ingin menggunakan sed untuk menghapus karakter <
,
dan >
dari setiap baris
Saya mencoba menggunakan sed 's/<>,//g'
tetapi tidak berhasil (tidak mengubah apa pun). Apakah saya perlu melarikan diri karakter khusus ini. Apakah mungkin untuk menghapus beberapa karakter menggunakan satu sed
perintah?
bash-3.2$ echo "<230948203[234]>," | tr '<>,' ' '
-> 230948203 [234] -EDITED Thanks to Paul
tr -d '<>,' ''
(seperti dalam jawaban Chris Down).tr -d '<>,'
tanpa '' pada akhirnya, bukan?Jawaban:
Dengan
sed
:Dengan
tr
:sumber
|
sebagai pembatas sedikit membingungkan.sed 's/[<>]//g'
sedikit lebih mudah dibaca.|
(dan karenanya harus menghindarinya) jauh lebih sedikit daripada saya harus berurusan dengan literal/
.|
juga sering merupakan meta-karakter, yang digunakan untuk pergantian dalam beberapa sintaks regexp (meskipunsed
dalam kebutuhan khusus\|
untuk itu). Secara pribadi, jika saya perlu berurusan dengan/
karakter literal , saya biasanya menggunakan,
sebagai pembatas.printf 'a\nb\nc\n' | sed -n '\|a|,\|b|p'
Coba yang ini:
sed 's/[<>,]//g'
sumber
|
dalam[]
. gunakan's/[<>,]//g'
.sed 's/[<>,]/ /g'
akan bekerja dengan baik, kecuali ide Anda akan menghapus bilah vertikal juga.