Bash удалить что-либо вне кавычек - PullRequest
0 голосов
/ 03 октября 2018

У меня есть запрос 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 голосов
/ 03 октября 2018

Получить значение атрибута href с действительным файлом HTML:

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

0 голосов
/ 03 октября 2018

это регулярное выражение поможет вам удалить ненужную строку.

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


'<a href="spike10-st-d43d7eff66aa.ovpn">pike10-st-d43d7eff66aa.ovpn</a>                 25-Sep-2018 13:49                4947'.replace(/(.*)(["])(.*)(["])(.*)/g, '$3')
0 голосов
/ 03 октября 2018

Не могли бы вы попробовать следующее (учитывая, что ваш фактический Input_file такой же, как show samples).

awk 'match($0,/href="[^"]*/){print substr($0,RSTART+6,RLENGTH-6)}' Input_file
0 голосов
/ 03 октября 2018

Вы можете использовать следующее для удаления чего-либо, кроме кавычек:

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

spike10-st-d43d7eff66aa.ovpn
spike11-First-d43d7eff66aa.ovpn
spike12-rst-d43d7eff66aa.ovpn
spike13-irst-d43d7eff66aa.ovpn
0 голосов
/ 03 октября 2018

Если на входе не будет никаких дополнительных кавычек, вы можете просто использовать cut

cut -d\" -f2 filename

Это ограничит кавычки и получит 2-е поле.Простой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...