1

when I tried to curl some pages.

curl http://test.com

I can get like following result

<html>
<body>
<div>
  <dl>
    <dd> 10 times </dd>
  </dl>
</div>
</body>
</html>

my desired result is like simply 10 times..

Are there any good way to achieve this ?

If someone has opinion please let me know

Thanks

Heisenberg
  • 3,657
  • 5
  • 30
  • 51
  • 1
    Does this answer your question? [Parsing HTML on the command line; How to capture text in ?](https://stackoverflow.com/questions/18746957/parsing-html-on-the-command-line-how-to-capture-text-in-strong-strong) – costaparas Feb 15 '21 at 10:54
  • Please search "curl xpath bash", plenty of results... – marekful Feb 15 '21 at 10:56
  • Preferably, use one the answers in the linked post that use a proper HTML parser (preferred over using regex). The same method can be used for other tags. – costaparas Feb 15 '21 at 10:56

1 Answers1

1

If you are are unable to use a html parser for what ever reason, for your given simple html example, you could use:

 curl http://test.com | sed -rn 's@(^.*<dd>)(.*)(</dd>)@\2@p'

Redirect the output of the curl command into sed and enable regular expression interpretation with -r or -E. Split the lines into three sections and substitute the line for the second section only, printing the result.

Raman Sailopal
  • 11,713
  • 2
  • 8
  • 16