如何使用像sed,awk或grep这样的linux程序从HTML选择列表中删除唯一值?

时间:2014-09-02 23:39:13

标签: regex awk sed grep vi

我从选择框中复制HTML,并尝试找出一种快速删除HTML的方法,因此我留下了一个名单列表。一般来说,它不是问题,但它们具有独特的价值。我更喜欢使用像grep,sed,awk或vi这样的程序。现在我必须手动完成并编辑每一行。任何帮助都会很棒,谢谢!

<option value="DL_54292">(DL)finance</option>
<option value="DL_54274">(DL)sales</option>
<option value="510496">Ben Smith</option
<option value="510507">Christopher Jones</option>
<option value="510513">Dawn James</option>
<option value="510533">Joe Wilson</option>
<option value="551825">Mark Jackson</option>
<option value="510562">Ronnie Libby</option>

编辑:Fede。建议的输出格式。

尝试获取简单的文本列表,使用换行符或回车符。

finance
sales
Ben Smith
Christopher Jones
Dawn James
Joe Wilson
Mark Jackson
Ronnie Libby

4 个答案:

答案 0 :(得分:1)

使用grep获取标签之间的文本

$ grep -oP '(?<=>)[^<>]+' file
(DL)finance
(DL)sales
Ben Smith
Christopher Jones
Dawn James
Joe Wilson
Mark Jackson
Ronnie Libby

答案 1 :(得分:1)

由于你提到了vi,你可以使用这一行

:%s_^<option value=".*">\(.*\)</option>$_\1_gi


%s -> substitute in all the file
^ -> start of line
.* -> any characters
\(.*\) -> any characters, remember those.
$ -> end of line
\1 -> first remembered match
gi -> ingnore case and take all matches in line
_ -> substitution separator

:s是搜索和替换,s_foo_bar用当前行中的bar替换foo

答案 2 :(得分:1)

awk可以执行此操作:

awk -F"<|>" '{print $3}'
(DL)finance
(DL)sales
Ben Smith
Christopher Jones
Dawn James
Joe Wilson
Mark Jackson
Ronnie Libby

如果我的输出请求是真的,括号中的数据也应该消失:

awk -F"<|>" '{sub(/[^)]*)/,"",$3);print $3}'
finance
sales
Ben Smith
Christopher Jones
Dawn James
Joe Wilson
Mark Jackson
Ronnie Libby

答案 3 :(得分:0)

如果您不介意使用Notepad ++,那么您可以使用此正则表达式:

.*>(.*)<.*

并替换为\1

enter image description here