2015-05-13 1 views
0

Я пытаюсь заменить sam_18 на sam в текстовом файле, но он не дает правильного результата.shell sed заменить специальный символ в текстовом файле, но не смог его заменить

sed -i -e 's/sam_18/sam/g' 

Он не производит никакого выхода. Я немного смущен, если рассматривать «_» между ними как особый символ. ? Любая помощь Благодаря

+0

Это использует '-i' и поэтому редактирует файл на месте (при условии, что вы дали ему имя файла в качестве аргумента). Запустите ** точно так, как будто это будет зависать в ожидании данных на стандартном входе (введите некоторые строки и нажмите 'ctrl-d', чтобы увидеть, как он что-то делает). –

+0

С опцией '-i' и без имени файла он должен произвести этот вывод:' sed: no input files' – Cyrus

+0

Какая платформа это? –

ответ

1

Опции -i требует файла (по крайней мере) для выполнения на месте замены:

sed -i -e 's/sam_18/sam/g' myfile 

Если файл не предусмотрен, sed считывает данные из стандартного ввода (или входной трубы). В этом случае вы не можете использовать -i. Тогда вы должны сделать что-то вроде:

cat myfile | sed -e 's/sam_18/sam/g' > newfile 
Смежные вопросы