Sir Cornflakes
Sir Cornflakes

Reputation: 665

Text extraction from a file format unknown to me

I have a lot of files obviously stemming from some web publishing system (unidentified) and want to convert them to plain text. The file format is characterised by a lot of curly braces, square brackets, and semicolons and contains formatting instructions besides the text. A sample file looks like this

{"content":[{"type":"paragraph","attributes":{"class":"align-left"},"content":["У Посольстві України в Республіці Польща 8 листопада було підписано Угоду між урядом України та урядом Монголії про взаємне скасування віз."]},{"type":"paragraph","attributes":{"class":"align-left"},"content":["“Ми підписали угоду, яка дозволяє громадянам України подорожувати без віз до Монголії. Це означає, що громадяни України можуть в’їжджати до Монголії без віз на 90 днів упродовж 180 днів” - ",{"type":"link","attributes":{"href":"https://www.facebook.com/UkraineMFA/posts/2498886686831903","target":"_blank","rel":null},"content":["повідомляє сторінка МЗС у Facebook"]}," із посиланям на посла України у Польщі Андрія Дещицю."]},{"type":"paragraph","attributes":{"class":"align-left"},"content":["Як підкреслив Дещиця, підписана угода важлива ще й тому, що до сьогоднішнього дня між Україною і Монголією діяла угода 1979 року, яка була підписана свого часу між СРСР і Монгольською Народною Республікою, а потім була підтверджена українським урядом."]}]}

What kind of file format is this? Is there a readily available converter to plain text or some documentation on that file format available?

Upvotes: 0

Views: 151

Answers (1)

Gilles Quénot
Gilles Quénot

Reputation: 185161

A more readable way, is to use yaml format:

$ yq -p json -o yaml file
content:
  - type: paragraph
    attributes:
      class: align-left
    content:
      - У Посольстві України в Республіці Польща 8 листопада було підписано Угоду між урядом України та урядом Монголії про взаємне скасування віз.
  - type: paragraph
    attributes:
      class: align-left
    content:
      - '“Ми підписали угоду, яка дозволяє громадянам України подорожувати без віз до Монголії. Це означає, що громадяни України можуть в’їжджати до Монголії без віз на 90 днів упродовж 180 днів” - '
      - type: link
        attributes:
          href: https://www.facebook.com/UkraineMFA/posts/2498886686831903
          target: _blank
          rel: null
        content:
          - повідомляє сторінка МЗС у Facebook
      - ' із посиланям на посла України у Польщі Андрія Дещицю.'
  - type: paragraph
    attributes:
      class: align-left
    content:
      - Як підкреслив Дещиця, підписана угода важлива ще й тому, що до сьогоднішнього дня між Україною і Монголією діяла угода 1979 року, яка була підписана свого часу між СРСР і Монгольською Народною Республікою, а потім була підтверджена українським урядом.

Or pretty print if as json:

$ jq . file
{
  "content": [
    {
      "type": "paragraph",
      "attributes": {
        "class": "align-left"
      },
      "content": [
        "У Посольстві України в Республіці Польща 8 листопада було підписано Угоду між урядом України та урядом Монголії про взаємне скасування віз."
      ]
    },
    {
      "type": "paragraph",
      "attributes": {
        "class": "align-left"
      },
      "content": [
        "“Ми підписали угоду, яка дозволяє громадянам України подорожувати без віз до Монголії. Це означає, що громадяни України можуть в’їжджати до Монголії без віз на 90 днів упродовж 180 днів” - ",
        {
          "type": "link",
          "attributes": {
            "href": "https://www.facebook.com/UkraineMFA/posts/2498886686831903",
            "target": "_blank",
            "rel": null
          },
          "content": [
            "повідомляє сторінка МЗС у Facebook"
          ]
        },
        " із посиланям на посла України у Польщі Андрія Дещицю."
      ]
    },
    {
      "type": "paragraph",
      "attributes": {
        "class": "align-left"
      },
      "content": [
        "Як підкреслив Дещиця, підписана угода важлива ще й тому, що до сьогоднішнього дня між Україною і Монголією діяла угода 1979 року, яка була підписана свого часу між СРСР і Монгольською Народною Республікою, а потім була підтверджена українським урядом."
      ]
    }
  ]
}

With jq, you can retrieve specifics parts. Ex:

jq '[.content | .[] | .content][0] | .[]' file
"У Посольстві України в Республіці Польща 8 листопада було підписано Угоду між урядом України та урядом Монголії про взаємне скасування віз."

Upvotes: 1

Related Questions