重击字符串操作

问题描述

作为一个完整的初学者,我正在尝试将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]

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...