当用 cmd 输出日志的时候,列如“>> "log11.txt",仅凭 cmd 自身的功能,能不能判断已输出的内容,和控制台的内容不重复,就是说,如果 txt 里某行内容是“hello world”,如果控制台里又出现了“hello world”,则不再追加写入到 txt 里。
注意!是整行内容相匹配就不追加写入,而不是出现“hello world”就整行不不写入
注意!是整行内容相匹配就不追加写入,而不是出现“hello world”就整行不不写入
1
seawing Feb 10, 2023
输出什么,怎么输出不都是 cmd 自身代码逻辑控制的吗?怎么改都行吧
|
2
AoEiuV020CN Feb 10, 2023
不能,你必须找个方法把所有出现过的行或者特征摘要给缓存起来,再判断,
|
3
smallparking Feb 10, 2023 via Android
使用 cmd 命令行终端本身并不能实现这个功能。如果想要实现这样的需求,可以使用其他编程语言,例如 Python 或 C++,编写代码来实现。
代码实现步骤: 读取日志文件内容 将读取到的内容存储到一个容器(例如 list )中 每次从控制台读取一行内容 在容器中查找是否存在这一行内容 如果容器中不存在这一行内容,则将其写入日志文件 这样就可以实现日志不重复的效果。 by chatgpt |
4
thinkershare Feb 10, 2023
你自己想想就知道了,当然是不行,否则>> 输出变成了一个 O(n)的写入操作,首先需要读取已经存在的所有行,然后从头匹配一次,然后确定是否追加.
正确姿势肯定是应该在程序里面自己缓存,然后检测是否需要使用>>追加到文件。 |
5
aijam Feb 10, 2023
换个思路,你把带重复的 log11.txt 丢 uniq 里不行吗?
|
6
julyclyde Feb 10, 2023
如果你的程序能够特地去分 stdout 和 terminal 的话(不过我看你的问法,你不像是了解这俩区别的口气)只能自己想办法做“去重复”了
如果你的程序根本不知道什么叫 terminal ,而仅仅是给 stdout 输出,那根本不会重复 |
7
1054850490 OP @smallparking 3# AI 大法好
|
8
1054850490 OP @aijam 我本身的代码知识不够,所以很多的逻辑完全不懂
|