LINUX.ORG.RU
ФорумAdmin

sed не работает регулярное выражение

 ,


0

1

cat test_file:

1983 Ivanov P.V 23d05vT Web-Dev
1974 Petrov F.A X49#@S  ProjectMgr

нужно убрать цифры(год рождения) в начале каждой строки

решил вот так:

sed -r 's/[0-9]{4}/ /g' 

но почему так не работает?

sed -r 's/^[0-9]{4}/ /g'

нужны варианты с условием замены,где строка должна начинатся с 4х-цифр



Последнее исправление: xaizek (всего исправлений: 1)

Скорее всего, у тебя виндовый файл с '\n\r' в конце строки.
Кстати, флаг 'g' тебе не нужен в любом случае.

ABW ★★★★★
()
Ответ на: комментарий от Samamy

Ошибка в регэксп? вроде экранирование не нужно, а циркумфлекс должен работать

w1rox
() автор топика
Ответ на: комментарий от futurama

начало строки одно, а строк то много.Если я правильно понял, то без глобал только первое соответствие изменяется, остальные нет, то есть в первой строке удалится число, а в остальных строках нет

w1rox
() автор топика
Ответ на: комментарий от futurama

все понял, первое соответствие в каждой строке.Спасибо )

w1rox
() автор топика
Ответ на: комментарий от w1rox

За готовыми решениями домашних заданий в job. Для решения конкретно этой задачи awk проще и удобнее.

anonymous
()
Ответ на: комментарий от w1rox

Да ничего тебе не надо исправлять в регулярке, всё работает:

abw@abw 7 ~ $ cat test_file
1983 Ivanov P.V 23d05vT Web-Dev
1974 Petrov F.A X49#@S  ProjectMgr
abw@abw 7 ~ $ sed -r 's/^[0-9]{4}/ /g' test_file
  Ivanov P.V 23d05vT Web-Dev
  Petrov F.A X49#@S  ProjectMgr
abw@abw 7 ~ $ 
И ни один из «советчиков» «как исправить» не удосужился это проверить. А нужно тебе разобраться что и почему не работает у тебя.

awk это круто,

Для решения этой задачи awk не проще и не удобнее, а приведённый пример решает совсем другую задачу.

ABW ★★★★★
()
Ответ на: комментарий от ABW

Ох уж эти советчики…

sed -r 's/^[0-9]{4}/ /g' test_file

-r здесь зачем? Что ты расширять собрался? g здесь зачем? Не знаешь, зачем они нужны, но все равно пихаешь?

sed 's/^[0-9]\{4\} //'
anonymous
()
Ответ на: комментарий от anonymous

-r здесь зачем?

Чтобы не городить экранирующие заборы. Очевидено же.

anonymous
()
int@blackhorse tmp 0 0.01 $ cat foo
1983 Ivanov P.V 23d05vT Web-Dev
1974 Petrov F.A X49#@S  ProjectMgr
int@blackhorse tmp 0 0.01 $ sed -r 's|^[0-9]+ ||g' foo
Ivanov P.V 23d05vT Web-Dev
Petrov F.A X49#@S  ProjectMgr
int@blackhorse tmp 0 0.01 $
ubik
()
Ответ на: комментарий от ABW

благодарю

Стало ещё непонятнее )) Буду «копать»

w1rox
() автор топика
Ответ на: комментарий от w1rox

У меня сложилось впечатление, что ты не изучаешь, а просишь сделать за тебя д/з. Изучение предполагает не получение готового ответа, а исследование вопроса. Что-то исследования в теме не видно.

Nedderokumo
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.