bash - 命令行比较(例如 diff)忽略每行的非空白第一个字符,同时保持在输出中显示它
问题描述
+
pandoc 使用前导或打印每种格式的可用扩展名-
(取决于扩展名是启用还是禁用)。所以例如
$ pandoc --list-extensions=markdown
-abbreviations
+all_symbols_escapable
-angle_brackets_escapable
+auto_identifiers
-autolink_bare_uris
+backtick_code_blocks
...
为了区分两种格式的可用扩展,我只是做(bash)
$ diff -y <(pandoc --list-extensions=markdown | tr -d '+-') <(pandoc --list-extensions=commonmark | tr -d '+-')
abbreviations <
all_symbols_escapable all_symbols_escapable
angle_brackets_escapable | ascii_identifiers
auto_identifiers auto_identifiers
autolink_bare_uris autolink_bare_uris
backtick_code_blocks backtick_code_blocks
blank_before_blockquote <
blank_before_header <
在输出中我想保持领先+
or -
,例如
+abbreviations <
+all_symbols_escapable -all_symbols_escapable
-angle_brackets_escapable | -ascii_identifiers
+auto_identifiers -auto_identifiers
-autolink_bare_uris -autolink_bare_uris
+backtick_code_blocks -backtick_code_blocks
+blank_before_blockquote <
+blank_before_header <
请注意,这与运行不同
$ diff -y <(pandoc --list-extensions=markdown) <(pandoc --list-extensions=commonmark)
-abbreviations | -all_symbols_escapable
+all_symbols_escapable | -ascii_identifiers
-angle_brackets_escapable | -auto_identifiers
+auto_identifiers <
-autolink_bare_uris -autolink_bare_uris
+backtick_code_blocks | -backtick_code_blocks
+blank_before_blockquote <
+blank_before_header <
最简单的方法是什么?
解决方案
我自己的尝试如下
#!/bin/bash
format1="$1"
format2="$2"
leftExtPattern=$(sed -E 's/^(\+|-)/\1\^/g' <(pandoc --list-extensions=$1 | tr -d '\r') )
rightExtPattern=$(sed -E 's/$/\$/g' <(pandoc --list-extensions=$2 | tr -d '\r') )
diffExtensions=$(diff -y -t --strip-trailing-cr \
<(echo "$leftExtPattern" | tr -d '^+-') \
<(echo "$rightExtPattern" | tr -d '$+-'))
while read -r pattern; do
diffExtensions=$(echo "$diffExtensions" | sed -E "s/\b(${pattern:1})\b/${pattern:0:1}\1/g")
done <<<"$leftExtPattern"$'\n'"$rightExtPattern"
echo "$diffExtensions"
我相信有一种更优雅、更紧凑的方法可以做到这一点,也许是xargs
......
推荐阅读
- java - Java LinkedList: uses both List and Queue interface?
- discord - “代码块”框问题中的不和谐格式
- python - 如何接收子小部件的悬停事件?
- mysql - 尝试转储数据库时出现错误 2 或“拒绝访问”
- python - 如何翻转加载的图像精灵?游戏
- python - 应用程序不会在菜单项中放置与号(wxPython)
- assembly - 简单的 hello world 示例 MASM x 32 程序集导致错误链接 2001
- class - 如何在飞镖中动态创建类实例以分配列表
- python - 如何使用 GStreamer CLI 通过 TCP 或 UDP 将 rtsp 视频源转发到接收器?
- python - 在 sympy 中替换一个矩阵