我有以下一行。我可以抓住一部分,但也要努力抓住第二部分。
行:
html:<TR><TD>PICK_1</TD><TD>36.0000</TD><TD>1000000</TD><TD>26965</TD><TD>100000000</TD><TD>97074000</TD><TD>2926000</TD><TD>2.926%</TD><TD>97.074%</TD></TR>
我希望在点击此行后得到以下结果。
PICK_1 97.074%
目前只需通过以下命令点击第一部分。
grep -Po "<TR><TD>[A-Z0-9_]+" test.txt
感谢有关我如何做到这一点的任何帮助。谢谢。
答案 0 :(得分:2)
将awk与自定义字段分隔符一起使用:
awk -F'[<>TDR/]+' '{ print $2, $(NF-1) }' file
这会在看起来像一个或多个打开或关闭<TD>
或<TR>
标签的内容上划分界线,并打印第二个和倒数第二个字段。
警告:除了您显示的输入之外,几乎所有输入都会中断,因为awk,grep和friends是为处理文本而非HTML而设计的。
答案 1 :(得分:1)
如果您总是使用“TD”标记分隔的相同数量的字段,则可以尝试使用此(脏)awk
:
awk -F'[<TD>|</TD>]' '{print $8 " " $80}'
或column
和awk
的这种组合:
column -t -s "</TD>" | awk -F' ' '{print $3 " " $11}'
或使用sed
代替column
:
sed -e 's/<TD>/ /g' | awk -F' ' '{print $3 " " $11}'
答案 2 :(得分:0)
尝试在&#34; -e&#34;之后提供每个模式。选项
grep -e PICK_1 -e "<TR><TD>[A-Z0-9_]+" test.txt
答案 3 :(得分:0)
awk -F'[<>]' '{print $5,$(NF-4)}' file
PICK_1 97.074%