问题描述
作为一个完整的初学者,我正在尝试将markdown文件转换为confluence标记。
我需要将[Title](https:// site.com)
改成[Title|https:// site.com]
。如果只是一个链接,我可以将其添加到var中并对其进行printf,但是例如在有10个链接的情况下,我很难弄清楚该如何做。
以前,我使用CONTENT = $(echo“ $ {CONTENT //#/ h1。}”)替换字符串,但是由于现在每个字符串都是不同的,因此我一直致力于解决该问题。我找到了用javascript编写的解决方案:http://chunpu.github.io/markdown2confluence/browser,但无法理解如何在bash中实现。
解决方法
对于此测试文件
$ cat file
[Title](https://site1.com)
[Title](https://site2.com)
[Title](https://site3.com)
[Title](https://site4.com)
[Title](https://site5.com)
[Title](https://site6.com)
[Title](https://site7.com)
[Title](https://site8.com)
[Title](https://site9.com)
[Title](https://site10.com)
Sed变体:
$ sed 's/\](/|/;s/)/\]/' file
[Title|https://site1.com]
[Title|https://site2.com]
[Title|https://site3.com]
[Title|https://site4.com]
[Title|https://site5.com]
[Title|https://site6.com]
[Title|https://site7.com]
[Title|https://site8.com]
[Title|https://site9.com]
[Title|https://site10.com]
Bash变体:
while read -r line; do
line=${line//](/|}
line=${line//)/]}
echo $line
done < file
[Title|https://site1.com]
[Title|https://site2.com]
[Title|https://site3.com]
[Title|https://site4.com]
[Title|https://site5.com]
[Title|https://site6.com]
[Title|https://site7.com]
[Title|https://site8.com]
[Title|https://site9.com]
[Title|https://site10.com]
Awk变体:
$ awk '{ sub(/\]\(/,"|"); sub(/\)/,"]"); print }' file
[Title|https://site1.com]
[Title|https://site2.com]
[Title|https://site3.com]
[Title|https://site4.com]
[Title|https://site5.com]
[Title|https://site6.com]
[Title|https://site7.com]
[Title|https://site8.com]
[Title|https://site9.com]
[Title|https://site10.com]