Разбор файла, извлечение содержимого и выполнение операции с извлеченным содержимым.
У меня есть HTML-файл с большим количеством содержимого в нем. Я хочу извлечь из него конкретные строки.
Пример: я хочу извлечь несколько строк, которые имеют этот конкретный контент "class="red"
<tr class="even"><td>***FRQ\AUTO\spml-hlr601\FC122_005036_PDPContext\DB8PD073\BulkPDPModreq***</a><td align='center' **class="red"**></tr>
Как только я извлеку эту строку, я бы хотел эту строку: FRQ\AUTO\spml-hlr601\FC122_005036_PDPContext\DB8PD073\BulkPDPModreq
,
Эта строка является именем каталога, и я хотел бы скопировать содержимое этого каталога в определенный каталог (/home/user)
Я хотел бы сделать эту операцию для всех вхождений строк, которые имеют текст "class=red"
Хотел бы сделать это с помощью sed.
1 ответ
Это будет работать для предоставленного вами образца. Я также предположил, что *
часть интересующей строки на самом деле не является частью вашего входного файла, но если это так, то потребуется подстройка:
$ cat foo.html
foo
<tr class="even"><td>FRQ\AUTO\spml-hlr601\FC122_005036_PDPContext\DB8PD073\BulkPDPModreq1</a><td align='center' class="red"></tr>
<tr class="even"><td>FRQ\AUTO\spml-hlr601\FC122_005036_PDPContext\DB8PD073\BulkPDPModreq2</a><td align='center' class="red"></tr>
bar
<tr class="even"><td>FRQ\AUTO\spml-hlr601\FC122_005036_PDPContext\DB8PD073\BulkPDPModreq3</a><td align='center' class="red"></tr>
<tr class="even"><td>FRQ\AUTO\spml-hlr601\FC122_005036_PDPContext\DB8PD073\BulkPDPModreq4</a><td align='center' class="red"></tr>
quux
,
$ grep 'class="red"' foo.html \
| sed 's#.*<td>##g;s#</a>.*##g;s#\\#/#g' \
| xargs -I% echo cp -r /home/hlrci/%/* /home/hlrci/CopyReq/
cp -r /home/hlrci/FRQ/AUTO/spml-hlr601/FC122_005036_PDPContext/DB8PD073/BulkPDPModreq1/* /home/hlrci/CopyReq/
cp -r /home/hlrci/FRQ/AUTO/spml-hlr601/FC122_005036_PDPContext/DB8PD073/BulkPDPModreq2/* /home/hlrci/CopyReq/
cp -r /home/hlrci/FRQ/AUTO/spml-hlr601/FC122_005036_PDPContext/DB8PD073/BulkPDPModreq3/* /home/hlrci/CopyReq/
cp -r /home/hlrci/FRQ/AUTO/spml-hlr601/FC122_005036_PDPContext/DB8PD073/BulkPDPModreq4/* /home/hlrci/CopyReq/
Это ищет class="red"
в foo.html
(grep
), удаляет все до <td>
и все, начиная с и в том числе </a>
на каждой строке (sed
), читает каждую строку и создает cp
Команда вокруг него, чтобы скопировать ваши файлы. В зависимости от входного файла, вашей ситуации и предпочтений вы можете / хотите
- адаптировать
sed
регулярное выражение или сделать его более конкретным - использовать что-то еще, чем
cp
на самом деле копировать ваши вещи (tar
,cpio
,rsync
...)
Dryrun с echo
и если вы довольны результатом, удалите echo
и перезапустить.