Text 一次只替换有限次数的大量.txt文件

Text 一次只替换有限次数的大量.txt文件,text,Text,我有很多包含文本的.txt文件。在课文中有一些符号,让我们说“@”。它们出现在随机位置。我想用另外两个符号替换这些符号中的前两个。所以如果我有“@…@…@@”(以…为文本),我想把它变成这个:xx…@…@(如果我想用x替换@)。 我只想替换前两个符号,但我遇到的选项是,要么允许我一次替换所有符号,要么什么都不替换(以这样的比例)。是否有任何程序或功能允许我一次对大量文件执行此操作,换句话说,我不必手动对每个文件执行此操作?您可以在Vim编辑器中执行此操作。首先,这里是如何在一个文件中完成它。假设

我有很多包含文本的.txt文件。在课文中有一些符号,让我们说“@”。它们出现在随机位置。我想用另外两个符号替换这些符号中的前两个。所以如果我有“@…@…@@”(以…为文本),我想把它变成这个:xx…@…@(如果我想用x替换@)。
我只想替换前两个符号,但我遇到的选项是,要么允许我一次替换所有符号,要么什么都不替换(以这样的比例)。是否有任何程序或功能允许我一次对大量文件执行此操作,换句话说,我不必手动对每个文件执行此操作?

您可以在
Vim
编辑器中执行此操作。首先,这里是如何在一个文件中完成它。假设我们在缓冲区中有这个文件

junk
@@@@
@@@@
以下是将文件中第一次出现的
@
替换为
x
的命令。要执行两次,只需执行两次:

:0/@/s/@/x/
如果我们在获得以下信息后执行:

junk
x@@@
@@@@
如果我们再执行一次,就会得到:

junk
xx@@
@@@@
解剖学:

  start search at 0 (before first line)
 | search for something
 || search for a line containing @
 |||  when you find @ perform a substitution command 
 ||| |  replace this
 ||| | |   with that (just once: the first occurrence in the line)
 ||| | |  |
 vvv v v  v
:0/@/s/@/x/
 ^
要在大量文件上就地运行此命令,我们可以使用脚本自动执行,如:

 # find all the .txt files here and in all subdirectories,
 # and execute the command "ex <file> < script" on them

 $ find . -name '*.txt' -exec ex {} < script \;
即,执行其中两次替换,然后
:x
保存并退出


vi中使用的冒号是不必要的,因为冒号是
vi
交互命令模式中的一个命令,用于输入
ex
命令。

我们讨论的是什么样的系统?比如,在命令行上,还是在编程语言中?你能扩展到目前为止你已经找到的选项吗?好吧,如何做并不重要。我只是想找个办法。到目前为止,我发现每一个能够同时处理大量文件的编辑器只能替换每个字符,所以它不能只替换2次,然后停止。
0/@/s/@/x/
0/@/s/@/x/
x