GEDCOM is the de facto standard for storing and transmitting genealogical data. Despite being around for decades and being supported by almost all online and offline software, many of the tools are proprietary, clunky or require technical knowledge that is beyond the average family tree investigator.

Welcoming gedomq. A command line tool and query language for GEDCOM files. It is heavily inspired by jq, in name and syntax. Here is a basic example:

gedcomq -gedcom file.ged '.Individuals | .Name'

The functionality provided from the gedcom package, possibly the most advanced GEDCOM library ever created.

If you are familiar with jq the above syntax will make sense to you. However, even if you have little to no technical experience, it should be easy to understand by learning the language basics.

Assuming file.ged from the previous example contains 2 individuals, the output might look like:

[
{
"Nodes": [
{
"Tag": "GIVN",
"Value": "Lucy Alcott"
},
{
"Tag": "SURN",
"Value": "Chauncey"
}
],
"Tag": "NAME",
"Value": "Lucy Alcott /Chauncey/"
},
{
"Nodes": [
{
"Tag": "GIVN",
"Value": "Sarah"
},
{
"Tag": "SURN",
"Value": "Taylor"
}
],
"Tag": "NAME",
"Value": "Sarah /Taylor/"
}
]

If this is too verbose for you, here is the same output using .Individuals | .Name | .String

[
"Lucy Alcott Chauncey",
"Sarah Taylor"
]

The engine also supports functions and and a special feature called the question mark:

? is a special function that can be used to show all of the possible next functions and accessors. This is useful when exploring data by creating the query interactively. For example the following query:

.Individuals | ?

Outputs (most items removed for brevity):

[
".AddNode",
".Age",
".AgeAt",
...
".SurroundingSimilarity",
".Tag",
".Value",
"?",
"Length"
]

Of course, you can also refer to the full package documentation.



You can download latest gedcomq from the releases page.

It's still very early in development, but I'm interested in targeting gedcomq to users with zero technical experience all the way up to software professionals. I'd love to know how you use it and how I can make it more useful and approachable for others.

Please don't hesitate to open an issue on the github project or send me an email.

Happy researching!