如何批量删除文件标题行第12-17位字符以适配xscreensaver文本滚动
嘿,这个需求很明确,刚好适合用命令行工具或者代码修改来解决,给你两个实用方案:
方案1:直接用sed命令处理现有文件
如果你已经有生成好的输入文件,不想改代码,用sed命令一行就能搞定——专门针对前两行标题不处理,从第三行开始删除第12到17位字符:
sed '3,$s/^\(.\{11\}\).\{6\}/\1/' input.txt > output.txt
命令解释:
3,$:指定只对第3行到最后一行执行替换操作,前两行标题原封不动^\(.\{11\}\):捕获行开头的11个字符(也就是你要保留的日期和小时分钟部分).\{6\}:匹配接下来的6个字符(第12到17位,包括冒号、秒数和多余空格)- 替换成
\1,也就是只保留前面捕获的11个字符,再拼接后面的标题内容
方案2:修改代码在生成时直接格式化
如果你更倾向于从源头解决,修改生成文本的代码(比如用Python),这样还能顺便添加标题行,一步到位:
# 假设你已经有了从RSS解析得到的条目行列表 entries_lines = [ "05-24 18:48:16 Truckers' strike leads to fuel shortages in Brazil", "05-24 18:48:16 The marathon atop the world's deepest lake" ] # 准备标题行(如果需要添加的话) title_lines = [ "ABC World News Feed RSS Data retrieved from https:--abcnews.go.com-abcnews-headlines", # 可以按需添加第二行标题 "RSS Headlines for Xscreensaver" ] # 合并并处理所有行 output_lines = title_lines.copy() for line in entries_lines: # 保留前11个字符,跳过第12-17位,拼接后面的标题 processed_line = line[:11] + line[17:] output_lines.append(processed_line) # 写入到输出文件 with open("rss_for_xscreensaver.txt", "w") as f: f.write("\n".join(output_lines))
代码说明:
- 先定义好标题行,直接加入输出列表
- 对每个RSS条目行,通过字符串切片保留前11个字符(日期和小时分钟),跳过第12到17位的内容,再拼接后面的标题文本
- 最后把所有行写入文件,直接就能给xscreensaver用
这样两种方案都能满足你的需求,选哪个看你更习惯哪种方式~
内容的提问来源于stack exchange,提问作者Bob C
相关产品推荐
相关产品推荐

