У меня есть файл со строками следующим образом:
...
... <230948203[234]>, ...
... <234[24]>, ...
..
Я хотел бы использовать sed, чтобы удалить символы <
,
и >
из каждой строки
Я пытался использовать, sed 's/<>,//g'
но это не сработало (ничего не изменилось). Нужно ли бежать от этих специальных символов. Можно ли удалить несколько символов одной sed
командой?
bash-3.2$ echo "<230948203[234]>," | tr '<>,' ' '
-> 230948203 [234] -EDITED Thanks to Paul
tr -d '<>,' ''
(как в ответе Криса Дауна).tr -d '<>,'
без '' в конце концов, не так ли?Ответы:
С
sed
:С
tr
:источник
|
в качестве разделителя немного запутанным.sed 's/[<>]//g'
немного легче читать.|
(и, следовательно, вынужден избегать его) гораздо меньше, чем с литералом/
.|
также часто является метасимволом, используемым для чередования в некоторых синтаксисах регулярных выражений (хотяsed
в особенности это необходимо\|
). Лично, если мне нужно иметь дело с буквальными/
символами, я обычно использую,
в качестве разделителя.printf 'a\nb\nc\n' | sed -n '\|a|,\|b|p'
Попробуй это:
sed 's/[<>,]//g'
источник
|
s внутри[]
. использовать's/[<>,]//g'
.sed 's/[<>,]/ /g'
будет работать точно хорошо, кроме вашей идеи удалят также вертикальные полосы.