Bash 字符串操作

Bash string operation

作为一个完全的初学者,我正在尝试将 markdown 文件转换为 confluence 标记。 我需要将 [Title](https:// site.com) 变成 [Title|https:// site.com]。如果它只是一个 link,我可以将它添加到一个 var 中并打印它,但是如果我有 10 个 link,我就无法弄清楚如何去做。 以前我使用 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]