如果这是一个非常愚蠢的问题,我道歉。我有以下格式的数据:
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
有没有办法让每一行都能找到一个超出两侧跨度标签的匹配?
答案 0 :(得分:1)
grep "\(StringGoesHere.*<span>.*</span>\)\|\(<span>.*</span>.*StringGoesHere\)"
这只是在span标记之前测试StringGoesHere
,在span标记之后再测试一次。如果每行有多组span标记,则无效,如果该行没有任何span标记,则无效。
答案 1 :(得分:0)
如果你拥有它,请使用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
答案 2 :(得分:0)
或尝试sed:
sed 's:<span>.*</span>::' <FILE>
HTH
答案 3 :(得分:0)
grep "SearchString" | grep -v "<span>.*SearchString.*</span>"
应该找到SearchString
的任何行,然后移除SearchString
位于<span> ... </span>
内的行。