如何从一个项目交替出现在每列的列表中制作出一个包含两列的 Markdown 表格?

如何从一个项目交替出现在每列的列表中制作出一个包含两列的 Markdown 表格?

我有一个很长的期刊标题常用缩写列表。列表中,完整单词后面跟着其缩写。例如:

  • 行政
  • 行政。
  • 应用
  • 应用
  • 行政的
  • 管理。
  • 近似
  • 大约。

我想将列表转换为 Markdown 表,如下所示:

单词 缩写
行政 行政。
应用 应用

问题是手动操作会花很长时间。所以,我正在寻找某种更快的方法。如果有帮助的话,所有缩写形式都以句号 (.) 结尾。

我在网上查过,但没找到任何相关内容。所以我在这里问。有什么帮助吗?

答案1

假设我们有来自您问题的列表输入文件。我们可以使用以下命令填充它:

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

可以使用简单的脚本在 Ubuntu 上创建 Markdown 表,如下所示:

  • 愚蠢的分步方法

    # 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
    
  • 智能单行方法(感谢@steeldriver)

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

你将获得包含以下内容的 Markdown 文件:

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

因此它将被渲染为 HTML

单词 缩写
行政 行政。
应用 应用
行政的 管理。
近似 大约。

有关使用过的工具的更多信息:

答案2

如果你会使用 Pandoc,它可以将 CSV 转换为 Markdown。假设你有一个每行一个单词的文件,例如在 N0rbert 的回答中,您可以使用将其转换为 CSV paste -d, - -,然后将其发送到 Pandoc:

% (printf "%s\n" Word Abbreviation; cat input-file) | paste -d, - - | pandoc -f csv -t markdown_phpextra
| Word           | Abbreviation |
|----------------|--------------|
| Administration | Admin.       |
| Applied        | Appl.        |
| Administrative | Administ.    |
| Approximate    | Approx.      |

给予:

单词 缩写
行政 行政。
应用 应用
行政的 管理。
近似 大约。

(可能不需要对标题进行进一步格式化,因为表头的格式通常不同。)

相关内容