我已经将我的grepping缩小到基本上只列出了列出CustName的行。这是来自domaintools,基本上使用curl抓取信息。
以下是命令输出的示例:
grep -E -o "CustName.{120}" file
242:CustName: Akamai Technologies<br/>Address: &nbs
正如你所看到的,120只代表CustName之后的字符,我认为这也是对其他搜索的安全赌注。我想要的唯一信息是Akamai Technologies。如何在<br/>
之前以最有效的方式解析这些数据?
注意,这只是一个域,另一个域可能有更多的单词,所以我不能在这里使用Awk和字段分隔符。谢谢你的帮助。
答案 0 :(得分:1)
试试这个
sed 's/\( \)\+/ /g;s?<br/>.*??;s/^.*: //'
答案 1 :(得分:0)
在一些基于示例行的快速编写的示例行中,以下似乎有效:
sed -n '/CustName/{s/^.*CustName://;s/^\( \)\+//;s/\( \)\+/ /g;s/<br\/>.*$//p}'
答案 2 :(得分:0)
不需要grep:
$ cat file
foo
242:CustName: Akamai Technologies<br/>Address: &nbs
bar
242:CustName: Some Other Company Name<br/>Address: &nbs
whatever
$ awk -F': +|<' '/CustName:/{gsub(/ /," "); print $2}' file
Akamai Technologies
Some Other Company Name
答案 3 :(得分:0)
这是另一个awk
命令:
awk -F: '$2 ~ /Cust/ { $0 = $3; gsub(/ /, " ")
gsub(/(^[ \t]+|[ \t]*<br.*$)/, ""); print }' file
输出:
Akamai Technologies
要完全匹配使用==
代替:
awk -F: '$2 == "CustName" { $0 = $3; gsub(/ /, " ")
gsub(/(^[ \t]+|[ \t]*<br.*$)/, ""); print }' file
或者
awk -v name="CustName" -F: '$2 == name { $0 = $3; gsub(/ /, " ")
gsub(/(^[ \t]+|[ \t]*<br.*$)/, ""); print }' file