空白字符混淆了用于提取降价链接(macOS)的shell脚本grep模式



我正在开发一个将markdown文件转换为文本捆绑包的工具,从Zett修改了一段很棒的代码,以便在macOS上使用,因为我将把我的Apple Notes文件移植到Craft。

我在使用grep将所有链接解析为数组时遇到问题。无论我多么努力地使用--null| xargs -0这样的选项,结果都会被空白字符分割:

targets=($(grep '![.*](.*)' "$inFile"))

举个例子:我有一个小的降价测试文件,其中包含以下内容:

# Allan Falk - ComicWiki
**Allan Falk - ComicWiki**
![Allan Falk - ComicWiki](images/Allan%20Falk%20-%20ComicWiki.png)
http://comicwiki.dk/wiki/Allan_Falk

运行上面的代码会创建以下数组,其中markdown链接是这样分割的:

![Allan
Falk
-
ComicWiki](images/Allan%20Falk%20-%20ComicWiki.png)

如何将完整的链接作为单独的数组条目(稍后将单独处理,使用sed复制文件等(?

您可以设置IFS=(空值(并使用如下读取:

IFS= read -ra arr < <(grep '![.*]' file)
# examine array
declare -p arr
declare -a arr='([0]="![Allan Falk - ComicWiki](images/Allan%20Falk%20-%20ComicWiki.png)")'

<(grep '![.*]' file)使用进程替换<运行grep,然后将此命令的输出发送到read

工作演示

经过一番挖掘,我发现我的陈述中缺少引号。因此,与其写:

targets=($(grep '![.*](.*)' "$inFile"))

我需要在第一组括号内添加引号:

targets=( "$(grep '![.*](.*)' "$inFile")" )

现在数组运行良好,不会出现空格分割。

相关内容

  • 没有找到相关文章