我想在这些行中显示最后一个单词,我试图查找单词值但没有答案,所以我想找引号之间的单词,但我的文件中包含我需要的引号之间的其他单词知道我的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
答案 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