vekt |
|
Темы:
37
Сообщения:
202
Участник с: 11 октября 2011
|
Подскажите, пожалуйста. Есть файл, в нем много строк-путей. Надо убрать совпадающие с шаблоном. Как это сделать скриптом? |
sleepycat |
|
![]()
Темы:
98
Сообщения:
3291
Участник с: 19 июля 2011
|
grep -v ?
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
|
vekt |
|
Темы:
37
Сообщения:
202
Участник с: 11 октября 2011
|
Это выводит в таком формате: non-db.txt:/usr/lib/initcpio/hooks/archiso_pxe_common. А мне надо в самом файле изменить, без вывода. |
Natrio |
|
Темы:
48
Сообщения:
4771
Участник с: 08 января 2011
|
sed -i -n '/шаблон/p' файл |
vekt |
|
Темы:
37
Сообщения:
202
Участник с: 11 октября 2011
|
Файл не жалко, сейчас попробую) |
vekt |
|
Темы:
37
Сообщения:
202
Участник с: 11 октября 2011
|
Шаблон такой- /boot/*. Набираю sed -n ‘//boot/*/p’ non-db.txt. Так же пробовал шаблон закрыть апострофами или же кавычками. В любом случае, выхлоп такой: sed: невозможно найти метку для перехода к `oot/*/p'. Так же попробовал изменить шаблон на “boot”, потому что, кажется, он конфликтует с синтаксисом sed. Теперь команда такая: sed -n ‘/boot/p’ non-db.txt и у меня в выводе получаются только те строки, которые соответствуют шаблону. А их наоборот надо убрать из файла. |
patashnik |
|
Темы:
4
Сообщения:
199
Участник с: 29 августа 2009
|
sed '/\/boot\/*/d' non-db.txt |
lampslave |
|
Темы:
32
Сообщения:
4801
Участник с: 05 июля 2011
|
Набираю sed -n ‘//boot/*/p’ non-db.txt.Вот чтобы так не делать сильно рекомендую почитать про регулярные выражения. Хоть в Википедии, хоть где. |
vekt |
|
Темы:
37
Сообщения:
202
Участник с: 11 октября 2011
|
patashnikСпасибо, работает, как надо. Я, чтобы убрать строки по нескольким шаблонам сделал такую команду: “sed ‘/\/boot\/*/d’ ‘/\/etc\/ssl\/*/d’ ‘/\/etc\/ssl\/*/d’ ‘/\*font*/d’ ‘/\*archiso*/d’ ‘/\/usr\/share\/mime\/*/d’”(надо удалить все строки, содержащие font, archiso, /usr/share/mime/* и /etc/ssl/*) Но почему-то удаляются только содержащие /boot/*. Чяднт? |
segrived |
|
Темы:
2
Сообщения:
38
Участник с: 06 марта 2012
|
VektВертикальную черту используйте для перечисления строк, которые нужно удалить.patashnikСпасибо, работает, как надо. Я, чтобы убрать строки по нескольким шаблонам сделал такую команду: “sed ‘/\/boot\/*/d’ ‘/\/etc\/ssl\/*/d’ ‘/\/etc\/ssl\/*/d’ ‘/\*font*/d’ ‘/\*archiso*/d’ ‘/\/usr\/share\/mime\/*/d’”(надо удалить все строки, содержащие font, archiso, /usr/share/mime/* и /etc/ssl/*) Но почему-то удаляются только содержащие /boot/*. Чяднт? А вообще да, почитайте про регулярные выражения. |