Mam plik z następującymi liniami:
...
... <230948203[234]>, ...
... <234[24]>, ...
..
Chciałbym użyć sed, aby usunąć znaki <
,
i >
z każdej linii
Próbowałem użyć, sed 's/<>,//g'
ale to nie działało (nic nie zmieniło). Czy muszę uciec od tych znaków specjalnych. Czy można usunąć wiele znaków za pomocą jednego sed
polecenia?
bash-3.2$ echo "<230948203[234]>," | tr '<>,' ' '
-> 230948203 [234] -EDITED Thanks to Paul
tr -d '<>,' ''
(jak w odpowiedzi Chrisa Downa).tr -d '<>,'
bez końcówki „”, nie?Odpowiedzi:
Z
sed
:Z
tr
:źródło
|
jako separatora jest nieco mylące.sed 's/[<>]//g'
jest nieco łatwiejszy do odczytania.|
(a zatem muszę z niej uciec) znacznie mniej niż z dosłownością/
.|
często jest także meta-znakiem, używanym do zmiany w niektórych składniach wyrażeń regularnych (chociaż jest tosed
szczególnie potrzebne\|
). Osobiście, jeśli muszę radzić sobie z literalnymi/
znakami, zwykle używam,
jako separatora.printf 'a\nb\nc\n' | sed -n '\|a|,\|b|p'
Spróbuj tego:
sed 's/[<>,]//g'
źródło
|
w sobie[]
. użyć's/[<>,]//g'
.sed 's/[<>,]/ /g'
będzie działał dokładnie dobrze, ale twój pomysł usunie również pionowe paski.