我需要替换以下字符:
¤与
â用
和我在一起
ș与s
ț与t
替换必须区分大小写。例如,如果字母是大写字母,则必须将其替换为大写字母。
我读过我可以sed
在此过程中使用,但我不知道如何使用它。谁能通过编写必须在Terminal中运行的确切命令来帮助我?
尽管sed
通常用于这些类型的任务,但实际上并不是针对它们而设计的-它的名字叫流编辑器。
专为非交互式文件编辑而设计的工具是ex
。(vi
是的“可视编辑器”形式ex
。)尤其是当您要在适当位置编辑文件时,ex
它是远远优于的工具sed
。
在这种情况下,所使用的sed
命令与之前给出的命令几乎相同,但是不必如此。以下是POSIX兼容的(不同于sed -i
)。
for file in *.php; do ex -sc '%s/[ăâ]/a/ge | %s/ș/s/ge | %s/ț/t/ge | %s/î/i/ge | x' "$file" ; done
解释:
-s
启动“静默模式”以准备批处理。-c
指定要执行的命令。
%
表示将以下命令应用于文件中的每一行。这些s///
命令很容易解释。e
末尾的标志表示抑制了任何错误(由于未找到模式),并且文件处理将继续。
|
是命令分隔符(不是管道)。
x
告诉ex
将任何更改写入文件(但仅在发生更改时)并退出。
如果要就地文件编辑,ex
则选择该工具。如果您想在进行更改之前预览它们,我建议按照@gardenhead的建议使用tr
。
(当然,如果您使用的是git等适当的版本控制系统,则可以使用进行适当的更改,ex
并通过运行将文件与旧版本进行比较git diff
。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句