Назад | Перейти на главную страницу

Почему sed не работает?

У меня есть файл, в котором есть одна строка с большим количеством ! персонажи. Я хочу удалить все ! персонажи.

Я пробовал это:

sed s/!// myfile

и это:

sed 's/!//' myfile

и это:

sed 's/"\!*"//' myfile

Но все они просто распечатывают все «!».

Должно быть, я упускаю что-то очевидное. Любые идеи?

Добавить g в ваше регулярное выражение для глобальной замены. В противном случае будет заменено только первое вхождение:

sed s/\!//g myfile

Не забывай бедных старых tr

tr -d '!' < filename

tr работает только со стандартным вводом, поэтому вам нужно передать в него данные.

Попробуй это:

$ sed s/\!//g myfile

добавьте g в конце, чтобы заменить все вхождения.

sed 's / "! *" // g' мой файл

Вы должны указать, что хотите удалить все вхождения: sed 's/!//g' myfile
Обратите внимание g, что означает «жадный».
Без "g" у вас будет только первый "!" удалено