2010-07-12 4 views
1

В моем случаекак использовать СЭД, чтобы удалить некоторые строки

текст:

21 130.104.72.201 3124 HTTP [C]±ÈÀûʱ ·¨Óï³ãëÌìÖ÷½Ì´óѧ 03-05 14:34 0.238 
22 129.108.202.10 3128 HTTP [C]ÃÀ¹ú µÂ¿ËÈø˹´óѧ 03-05 14:08 1.983 
23 130.88.203.27 3128 HTTP [C]Ó¢¹ú Âü³¹Ë¹ÌØ´óѧ 03-05 14:08 0.996 
24 129.74.152.66 3124 HTTP [C]·¨¹ú ʥĸÂêÀûÑÇ´óѧ 03-05 14:08 0.922 

Команда:

sed 's/HTTP.*://' ip_all02.txt 

, но ничего не было удалено.

+0

мим хорошо работает. На какой платформе вы работаете? – OmniBus

+0

mine is cent os. – bitshine

+0

Это не вопрос программирования. Я проголосовал за переход на http://superuser.com – Gabe

ответ

3

Что вы пытаетесь сделать? Это удалит все от первого «HTTP» до последнего «:», как это:

21 130.104.72.201 3124 34 0.238 
22 129.108.202.10 3128 08 1.983 
23 130.88.203.27 3128 08 0.996 
24 129.74.152.66 3124 08 0.922 

... и результаты будут сброшены на стандартный вывод. Если вы хотите его в новом файле, используйте> (текущее содержимое лома) или >> (сохранить текущее содержимое), чтобы перенаправить вывод.

sed 's/HTTP.*://' ip_all02.txt > ip_all02_clean.txt 
+0

Или используйте «sed -i» для обновления на месте. – camh

+0

Хорошая точка. Я обычно думаю о -i как о опасном; Обычно я предпочитаю выводить в другой файл, проверяю его, чтобы убедиться, что он выглядит хорошо, а затем скопируйте его поверх исходного файла. Конечно, если вы имеете дело с несколькими файлами в глубокой структуре каталогов, которые могут быть непрактичными. –

+0

Да, я хочу этот результат, но на моей машине ничего не происходит. – bitshine

1

если у вас есть поглазеть/AWK на вашем CentOS, это еще один жизнеспособный вариант

awk '{gsub(/HTTP.*:/,"")}1' file 
Смежные вопросы