Shell

如何使用 grep 或 sed 在同一行中提取多個匹配項

  • December 9, 2016

我有一個文件,其中包含如下文本:

<TR><TD>5</TD><TD>Ukraine</TD></TR>
<TR><TD>3</TD><TD>Vietnam</TD></TR>
<TR><TD>3</TD><TD>Taiwan</TD></TR>
<TR><TD>3</TD><TD>Netherlands</TD></TR>
<TR><TD>3</TD><TD>South Korea</TD></TR>
<TR><TD>3</TD><TD>Great Britain</TD></TR>

我只想提取<TD>元素之間的資訊:

5 Ukraine
3 Vietnam
3 Taiwan
3 Netherlands
... 

檢查這個

$awk -F"[>|<]" '{print $5,$9}' input.txt
5 Ukraine
3 Vietnam
3 Taiwan
3 Netherlands
3 South Korea
3 Great Britain

使用 sed 命令

$ sed "s#<TR><TD>\(.\)</TD><TD>\(.*\)</TD></TR>#\1 \2#" input.txt
5 Ukraine
3 Vietnam
3 Taiwan
3 Netherlands
3 South Korea
3 Great Britain

引用自:https://unix.stackexchange.com/questions/329103