LINUX.ORG.RU

sed


0

0

ДОброе утро.

как sed`ом удалить всё что существует до первого регэкспа, а ещё лучше 
всё то, что существует начиная с одного и заканчитвая другим регэкспом,
сейчас пытаюсь удалить всё что находиться до регэкспа с помощью: 

cat file1.tmp | sed -e "s/.*\(static\)/\1/g"

но он оне работает. подскажите в чём трабла...

Что именно не работает?

davidov@theatre:~/tmp$ cat file1.tmp 
developers developers static
davidov@theatre:~/tmp$ cat file1.tmp | sed -e "s/.*\(static\)/\1/g"
static

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

Вот как это у меня работает:
luch@box ~/projects/scripts $ cat 1.test
123412351243423
1234123412342134
213412342134
static
123412341234
bggggggluch@box ~/projects/scripts $ cat 1.test | sed -e "s/.*\(static\)/\1/g"
123412351243423
1234123412342134
213412342134
static
123412341234
bgggggg

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

то есть все строки до вхождения static он игнорирует, но в текущей
строку удаляет всё то что находиться до static. Как сделать так что бы
удалялост всё что находиться до первого вхождения static ?

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

Я бы предпочёл awk для этих целей: $ cat 1 123 456 r1 14 5123 521 34 r2 541 14 52

$ cat 1 | awk 'BEGIN {F=0;}; {if ($0 ~ /r1/){F=1}; if (F==1) {print; if ($0 ~ /r2/) {F=0}} }' r1 14 5123 521 34 r2

Здесь r1 и r2 - первый и второй регексп соответственно

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

Сорри, забыл про форматирование :(

Я бы предпочёл awk для этих целей:
$ cat 1
123
456
r1
14
5123
521
34
r2
541
14
52

$ cat 1 | awk 'BEGIN {F=0;}; {if ($0 ~ /r1/){F=1}; if (F==1) {print; if ($0 ~ /r2/) {F=0}} }'
r1
14
5123
521
34
r2


Здесь r1 и r2 - первый и второй регексп соответственно

Laz ★★★★★
()

man sed, раздел `Addresses'. Пример использования:

[testdir]> cat test
1 a
2 b
3 c
2 q
4 d
5 f
[testdir]> sed '/2/,/4/d' test
1 a
5 f

Если надо удалять не строки целиком, а именно от одного регэкспа до другого, то можно придумать что-то вроде
[testdir]> sed '/2/{:l s,2.*4,24,; t; N; b l}' test
1 a
24 d
5 f

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