当前位置: 首页 > article >正文

从一个文本文件中挑选出符合条件的内容行

  某天,张三得到一个需求,将如下格式的文本文件中的文件名开头的内容行提取出来,存入一个新的文本文件。

ok
0
文件名:1_zoukaige.mp3
index:1

0
文件名:2_dahan.mp3
index:2

0
文件名:3_kuai.mp3
index:3

0
文件名:4_weixiao.mp3
index:4

0
文件名:10_zoukaige.mp3
index:5

0
文件名:12_zoukaige.mp3
index:6
……
5

  张三大致看了一下文本内容,足有几千行,这个我熟啊,搞个Java文件读取,过滤一下,分分钟拿下,于是开始了编码。

File f = new File("wb.txt");
String res = "";
try {
	InputStream is = new FileInputStream(f);
	InputStreamReader isr = new InputStreamReader(is);
	BufferedReader br = new BufferedReader(isr);
	String t;
	while((t = br.readLine())!=null){
	  if(t.startsWith("文件名")){
	    sb.append(t+"\r\n");
	  }
	}
	is.close();
	isr.close();
	res = sb.toString();

  File f2 = new File("wb2.txt");
  FileOutputStream fout = new FileOutputStream(f2);
	OutputStreamWriter osw = new OutputStreamWriter(fout);//UTF-8
	osw.write(res);
	osw.close();
} catch (Exception e) {
}
return res;

  完成任务后,张三正要去找王哥,回头一看,突然发现王哥正在身后看着他呢,“王哥,这个任务,我完成了!”

“嗯,我看到了,你把文件发我,你这效率不行啊,下次不找你了”,王哥说着话走了。

“啊?这……”。

张三发送完文件,有些郁闷,心想这也挺快的呀,不到十分钟就完成了呀。

张三找旁边的李四,说了说情况,李四听完又看了看张三的代码,说:“嗯,其实有更简单的方法,不用写代码就能实现,你看我的!”

李四接过张三的键盘,按ctrl + alt + t打开终端,切换路径,输入cat wb.txt | grep '^文件名' > wenjianming.txt,打开wenjianming.txt,说:“看到没,这样就实现了,比你那个快吧”

“四哥,这命令牛皮啊,具体啥意思?”

“cat wb.txt就是输出文本文件的内容,| 后面的grep命令,就是根据前面cat命令的输出,进行过滤,引号里面的^文件名的意思就是以文件名字符串开头的内容要保留下来,其他忽略”

张三一脸震惊的看着李四:“没想到还有这种操作,四哥,请收下我的膝盖”

“别整这一出,赶紧写代码吧”

“四哥,咱现在用的是Linux系统,这个我会了。要是Windows系统得怎么办?”

“Windows命令行对utf8格式的文本文件支持不好,改一下编码格式到gbk或者ANSI编码,然后执行type wb.txt | findstr "^文件名" > wenjianming.txt就行了,这里要用双引号”

“四哥,我有一个文本文件里面保存了许多网址,格式是这样的,你看看”

电影
http://www.dy.com
http://www.mv.com

音乐
http://www.mp3.com
http://www.jiu.com
http://www.dd.com

小说
http://www.xhs.com
http://www.jy.com

如果,我想只把分类都提取出来,我该怎么写命令呢?

“不行,我得写代码了,工作比较着急”,李四拒绝了。

“四哥,中午我请你吃饭,帮个忙啊”

“好吧”,李四又输入了一行命令cat wangzhi.txt | grep -v "^$" | grep -v "^http",回车后,就只显示了分类。“看到了吧,后面的grep -v相当于去除空行和http开头的行,这样剩下的就是分类了”
在这里插入图片描述

中午,张三请李四吃了饭,约好有空再向他请教。


http://www.kler.cn/news/313361.html

相关文章:

  • Java ----常用类
  • 算法课习题汇总(2)
  • java中SPI(服务提供者的接口)
  • 项目实训:CSS基本布局理解——WEB开发系列38
  • js中两种异步方式:async+await以及then
  • 梧桐数据库(WuTongDB):Volcano/Cascades 优化器框架简介
  • 毕业设计选题:基于ssm+vue+uniapp的捷邻小程序
  • Linux系统编程(基础指令)上
  • 《动手深度学习》线性回归简洁实现实例
  • 【Webpack--013】SourceMap源码映射设置
  • windows环境下配置MySQL主从启动失败 查看data文件夹中.err发现报错unknown variable ‘log‐bin=mysql‐bin‘
  • 使用vite+react+ts+Ant Design开发后台管理项目(二)
  • SpringBoot:关于Redis的配置失效(版本问题)
  • 6. Python 输出长方形,直角三角形,等腰三角形
  • 【Linux基础IO】深入Linux文件描述符与重定向:解锁高效IO操作的秘密
  • 解决“Windows系统中以管理员身份运行程序时无法访问映射的网络磁盘”的问题
  • C# WPF如何实现数据共享
  • C#使用实体类Entity Framework Core操作mysql入门:从数据库反向生成模型2 处理连接字符串
  • 2024年上海小学生古诗文大会倒计时一个月:做2024官方模拟题
  • 人家90年代就尝试过的模式:我们所热衷的“数科公司”
  • 基于spring的ssm整合
  • 航空航司reese84逆向
  • linux文件同步、传输
  • 数据结构不再难懂:带你轻松搞定图
  • linux-L6 linux管理服务的启动、重启、停止、重载、查看状态命令
  • EmguCV学习笔记 VB.Net 12.3 OCR
  • OpenAI GPT o1技术报告阅读(4)- 填字游戏推理
  • 【Git 操作】Git 的基本操作
  • Elasticsearch:检索增强生成背后的重要思想
  • 【VUE3.0】动手做一套像素风的前端UI组件库---先导篇