Tom*_*agk 23 command-line text-processing
我想删除多个文本文件的第一行并将其替换为另一行。有没有办法使用终端来做到这一点?
我知道如何使用 vim,有没有办法让它自动化?我想避免手动执行(如分别编辑每个文件)。
如果可能的话,我想避免安装新的库(特别是对于我认为非常简单的类似的东西 - 但我可能是错的)。
提前致谢!
hee*_*ayl 25
您可以使用sed:
sed -i.bak '1s/^.*$/new line/' *.txt
Run Code Online (Sandbox Code Playgroud)
这将用.txt文本替换当前目录中所有文件的第一行new line,更改它以满足您的需要。
此外,原始文件将使用.bak扩展名进行备份,如果您不想要,只需使用:
sed -i '1s/^.*$/new line/' *.txt
Run Code Online (Sandbox Code Playgroud)
mur*_*uru 14
好吧,使用vim它自己:
vim -Nesc 'bufdo call setline(1,"This is the replacement.") | wq' file1 file2 ...
Run Code Online (Sandbox Code Playgroud)
这是做什么的:
setline (n, text),很好,是一个函数,集线n到text。call 需要调用函数。bufdo 用于跨缓冲区重复命令(没有范围,它作用于所有缓冲区)。wq保存并退出缓冲区。我们需要在移动到下一个缓冲区之前执行此操作,因此该call命令使用|.-c cmd运行cmd是加载第一个缓冲区后的命令模式命令。Nes 开启不兼容、静默、ex-mode,更适合非交互处理。好处:
setline文本内容可以是任何东西-一个&在sed替换文本可以产生意想不到的效果。