在两个引号unix中找到单词

时间:2013-03-25 10:07:58

标签: linux unix awk

我想在这些行中显示最后一个单词,我试图查找单词值但没有答案,所以我想找引号之间的单词,但我的文件中包含我需要的引号之间的其他单词知道我的html文件是,实际上并不想显示select标签的值。

grep '*' hosts.html | awk '{print $NF}'

例如:

value='www.visit-tunisia.com'>www.visit-tunisia.com 
value='www.watania1.tn'>www.watania1.tn 
value='www.watania2.tn'>www.watania2.tn 

我会

www.visit-tunisia.com 
www.watania1.tn 
www.watania2.tn 

3 个答案:

答案 0 :(得分:0)

您需要使用>选项将字段分隔符设置为-F

$ awk -F'>' '{print $NF}' hosts.html
www.visit-tunisia.com
www.watania1.tn
www.watania2.tn

注意:我不确定您要通过grep '*' hosts.html尝试实现的目标?

答案 1 :(得分:0)

自由地解释注释,你有输入行可能包含:

value='www.visit-tunisia.com'>www.visit-tunisia.com
value='www.watania1.tn'>www.watania1.tn
value='www.watania2.tn'>www.watania2.tn

并且您希望在一行上重复的名称作为输出:

www.visit-tunisia.com
www.watania1.tn
www.watania2.tn

这可以使用sed并捕获括号来完成。

sed -n -e "s/.*'\([^']*\)'.*\1.*/\1/p"

-n说“除非我说这样做否则不打印”。如果替换工作,则打印s///p命令。该模式查找“任何”流(.*),单引号,捕获内部的内容直到下一个单引号('\([^']*\)'),后跟任何文本,捕获的文本(第一个{ {1}}),等等。替换文本是捕获的内容(第二个\1)。

示例:

\1

显然,如果您愿意,可以优化匹配的$ cat data www and wotnot value='www.visit-tunisia.com'>www.visit-tunisia.com blah value='www.watania1.tn'>www.watania1.tn hooplah value='www.watania2.tn'>www.watania2.tn if 'nothing' is required, nothing will be done. $ sed -n -e "s/.*'\([^']*\)'.*\1.*/\1/p" data www.visit-tunisia.com www.watania1.tn www.watania2.tn nothing $ 部分。我在表达式周围使用双引号,因为模式匹配单引号。如果你需要允许单引号和双引号,生活就会变得棘手;在那时,我将脚本放入一个文件并运行[^']*以使生活更轻松。

答案 2 :(得分:0)

sed 's/.*>\(.*\)/\1/g' your_file