Answers:
您可以使用sed
:
sed -i.bak '1s/^.*$/new line/' *.txt
这将用.txt
文本替换当前目录中所有文件的第一行,并new line
对其进行更改以满足您的需要。
.bak
如果您不希望使用扩展名,也可以使用扩展名备份原始文件:
sed -i '1s/^.*$/new line/' *.txt
好吧,使用vim
自身:
vim -Nesc 'bufdo call setline(1,"This is the replacement.") | wq' file1 file2 ...
这是做什么的:
setline (n, text)
,很好,是一个函数,集线n
到text
。call
需要调用函数。bufdo
用于在缓冲区之间重复命令(无范围,它作用于所有缓冲区)。wq
保存并退出缓冲区。我们需要在继续下一个缓冲区之前执行此操作,因此此call
命令使用链接到该命令|
。-c cmd
cmd
加载第一个缓冲区后,runs 是一个命令模式命令。Nes
打开不兼容的无声ex模式,这对于非交互式处理更好。好处:
setline
文本内容可以是任何东西-一个&
在sed
替换文本可以产生意想不到的效果。sed
看起来更容易使用,但是做起来真的很棒vim
!非常感谢您的回答!
bufdo
)。考虑您已经打开了文件并...并显示的替代文件1s/foo/bar/
。
sed
实际上就是我想要的!