这里是新手。我正在尝试编写一个 bash 脚本,该脚本将为文件夹中的每个文件替换以下序列:
[tr][tr]{X}
其中 X 是任何十进制数(数字和“.”的集合),其中 X 是任何十进制数(数字和“.”的集合)
[tr][tr]{\tinyX}
。
有任何想法吗?
谢谢
答案1
如果您无权访问 GNU sed
,您还可以使用perl
(实际上借用了其-i
GNU sed
):
find . -type f -exec perl -Tpi -e 's/\Q[tr][tr]{\E\K[\d.]+\}/\\tiny$&/g' {} +
答案2
GNUsed
使用全局替换模式s/regexp/replacement/g
:
sed -i'' 's/\(\[tr\]\[tr\]{\)\([0-9.]\+}\)/\1\\tiny\2/g' /path/to/folder/*
这捕获一组中的字符串[tr][tr]{
并X
包含至少一个数字或.
(括号表达式[0-9.]\+
,\+
匹配括号内的字符一次或多次),然后}
在第二组中结束,并用第一组替换匹配的部分,\tiny
并且每行第二组。()
组的括号、文字方括号[]
和+
文字反斜杠\
需要用另一个反斜杠转义。
确保在运行此程序之前备份您的数据文件夹(或使用-i.back
而不是-i''
将原始文件保留为filename.back
)。