如何使用 bash 将字符从大写替换为小写,考虑到这些字符位于标签?

如何使用 bash 将字符从大写替换为小写,考虑到这些字符位于标签?

我有很多文件包含大小写混合的 URL,我需要将其转换为小写,只更改文件内的链接,其余内容保持不变。我发现这可以通过在 Notepad++ 中使用正则表达式来实现:

在文件中查找

搜索:(href=['"])(.+)(['"])

替换为:\1\L\2\3

但是,我需要使用 bash 或 vim 来执行此操作。我该怎么做?此外,如何将其应用于各个文件夹中的多个文件?

答案1

在 Bash 中:

sed -i 's/<a href.*\">/\L&/' file.txt

在 VIM 中:

:%s/<a href.*\">/\L&/

我不确定您是只想更改 FQDN,还是更改整个 URL,或者每个锚点都单独占一行,这些应该可以满足任何情况。这只会更改锚点 URL,而不会更改锚文本(我假设这就是您要问的)

编辑:

如果要将其应用于不同文件夹中的多个文件,cd请转到包含要编辑的所有文件和子文件夹的基本目录,然后运行以下命令:

find . -type f -name "*.html" | while read line; do sed -i 's/<a href.*\">/\L&/' $line; done

这将查找您当前目录(您应该cd进入的目录)和以 .html 结尾的子目录中的任何文件,并执行前面提到的 sed 命令。(根据需要调整文件扩展名)。

相关内容