Grep / RegExp help - PullRequest
       22

Grep / RegExp help

1 голос
/ 12 марта 2010

Прошу прощения, если это действительно глупый вопрос. У меня есть данные в формате:

etc etc etc <span>etc etc etc</span> etc etc etc
etc etc etc <span>etc etc etc</span> etc etc etc
etc etc etc <span>etc etc etc</span> etc etc etc

Есть ли способ получить каждую строку для совпадения, которое выходит за пределы тегов span с обеих сторон?

Ответы [ 4 ]

1 голос
/ 12 марта 2010
grep "\(StringGoesHere.*<span>.*</span>\)\|\(<span>.*</span>.*StringGoesHere\)"

Это просто проверка на StringGoesHere перед тегами span и снова после тегов span. Это не будет работать, если в строке более 1 набора тегов span, а также не будет работать, если в строке нет тегов span.

0 голосов
/ 12 марта 2010

grep "SearchString" | grep -v "<span>.*SearchString.*</span>"

должен найти любую строку с SearchString, затем удалить строки, где SearchString находится внутри <span> ... </span>.

0 голосов
/ 12 марта 2010

Или попробуйте sed:

sed 's:<span>.*</span>::' <FILE>

НТН

0 голосов
/ 12 марта 2010

используйте gawk, если он у вас есть (укажите вашу ОС в следующий раз)

gawk 'BEGIN{
    RS="</span>"
    FS="\n"
}
{
  m=split($0,a,"<span>")
  if( a[1] ~ /word/){
    print "found: "a[1]" in line: "NR
  }
} ' file

выход

$ cat file
word <span> word blah</span> word
word <span> word
          blah</span>
word etc <span> word blah</span> etc

$ ./shell.sh
found: word  in line: 1
found:  word
word  in line: 2
found:
word etc  in line: 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...