重击删除引号之外的任何内容

时间:2018-10-03 15:56:28

标签: html regex bash awk sed

我有一个curl请求,该请求返回以下输出:

<a href="spike10-st-d43d7eff66aa.ovpn">pike10-st-d43d7eff66aa.ovpn</a>                 25-Sep-2018 13:49                4947
<a href="spike11-First-d43d7eff66aa.ovpn">spike11-First-d43d7eff66aa.ovpn</a>                 25-Sep-2018 14:04                4951
<a href="spike12-rst-d43d7eff66aa.ovpn">spike12-rst-d43d7eff66aa.ovpn</a>                 25-Sep-2018 14:27                4947
<a href="spike13-irst-d43d7eff66aa.ovpn">spike13-irst-d43d7eff66aa.ovpn</a>                 25-Sep-2018 15:00                4947

任何人都可以给我一个提示,如何删除所有外部引号以仅接收* .ovpn文件的名称,例如:

spike10-st-d43d7eff66aa.ovpn
spike11-First-d43d7eff66aa.ovpn
spike12-rst-d43d7eff66aa.ovpn
spike13-irst-d43d7eff66aa.ovpn

5 个答案:

答案 0 :(得分:4)

如果输入中不包含任何引号,则可以使用cut

cut -d\" -f2 filename

这将在引号上定界,并获得第二个字段。很简单。

答案 1 :(得分:4)

使用有效的HTML文件获取属性href的值:

xmlstarlet select --text --template --value-of '//a/@href' -n file.html

输出:

pike10-st-d43d7eff66aa.ovpn
spike11-First-d43d7eff66aa.ovpn
spike12-rst-d43d7eff66aa.ovpn
spike13-irst-d43d7eff66aa.ovpn

请参阅:xmlstarlet select --help

答案 2 :(得分:2)

您可以使用以下命令删除引号之外的所有内容:

awk -F\" '{print $2}' file

spike10-st-d43d7eff66aa.ovpn
spike11-First-d43d7eff66aa.ovpn
spike12-rst-d43d7eff66aa.ovpn
spike13-irst-d43d7eff66aa.ovpn

答案 3 :(得分:1)

请尝试以下操作(考虑到您的实际Input_file与show示例相同)。

awk 'match($0,/href="[^"]*/){print substr($0,RSTART+6,RLENGTH-6)}' Input_file

答案 4 :(得分:1)

此正则表达式可帮助您删除不需要的字符串。

.replace(/(.*)(["])(.*)(["])(.*)/g, '$3')


'<a href="spike10-st-d43d7eff66aa.ovpn">pike10-st-d43d7eff66aa.ovpn</a>                 25-Sep-2018 13:49                4947'.replace(/(.*)(["])(.*)(["])(.*)/g, '$3')