Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How do I make a Markdown table of two columns out of a list whose items alternate to each column?

I have a long list of common abbreviations for words in periodical titles. In the list, the full word is followed by its abbreviation. For example:

  • Administration
  • Admin.
  • Applied
  • Appl.
  • Administrative
  • Administ.
  • Approximate
  • Approx.

I want to turn the list into a Markdown table, like this:

Word Abbreviation
Administration Admin.
Applied Appl.

The problem is that doing this by hand would take forever. So, I’m looking for some way to do this faster. If it helps, all of the abbreviated forms end with a period (.).

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

I’ve looked online but couldn’t find anything for this. That’s why I’m asking here. Any help?

>Solution :

Let’s assume that we have input file with list from your question. We can fill it using below command:

cat <<EOF > words+abbrs.txt
Administration
Admin.
Applied
Appl.
Administrative
Administ.
Approximate
Approx.
EOF

Creation of Markdown table is possible on Ubuntu using simple scripting as shown below:

  • dumb step-by-step method

    # write table header
    echo "**Word** | **Abbreviation**" > table.md
    echo "- | -" >> table.md
    
    # extract odd lines as words to file words.txt
    awk 'NR%2==1' words+abbrs.txt > words.txt
    # extract even lines as abbreviations to file abbrs.txt
    awk 'NR%2==0' words+abbrs.txt > abbrs.txt
    
    # combine columns from words.txt and abbrs.txt with '|' separator
    paste -d '|' words.txt abbrs.txt >> table.md
    
  • smart one-liner method (thanks to @steeldriver)

    { printf '%s\n' '**Word** | **Abbreviation**' '-|-'; paste -d '|' - - < words+abbrs.txt; } > table.md
    

You will get the Markdown file with the following contents:

$ cat table.md 
**Word** | **Abbreviation**
- | -
Administration|Admin.
Applied|Appl.
Administrative|Administ.
Approximate|Approx.

So it will be rendered to HTML as

Word Abbreviation
Administration Admin.
Applied Appl.
Administrative Administ.
Approximate Approx.

More info about used tools:

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading