登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

永福的技术博客

Linux运维

 
 
 
 
 

日志

 
 

sed 获取文件中的一段数据的方法  

2013-01-07 20:26:11|  分类: 软件编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
首先使用如下命令,获取行号。
sed -n  -e '/CREATE TABLE/=' -e '/CREATE TABLE/p' test1.sql

= 表示打印匹配行的行号
p  表示打印匹配行

得到如下格式的输出
23
CREATE TABLE `CeanaterAd` (
.......      此处省略n行
1890
CREATE TABLE `UserFsdfodfllow` (
2369
CREATE TABLE `UserMeddssageReply` (
2529
CREATE TABLE `UserWeasdflthLog` (


现在要获取 UserFsdfodfllow 表的数据。
直接
sed -n '1890,2368p'  test1.sql  > /tmp/test2.sql
将1890行到2368行的数据输出并输出到/tmp/test2.sql文件中。

再将最后7行剪切到文件开头,就可以完成利用sed从库备份sql文件中只抽取一个表文件的数据。


其实还有种思路来做更简单( 但这样行不通)。
那就是
 sed -n '/CREATE TABLE `UserFsdfodfllow`/,/CREATE TABLE `UserMeddssageReply`/p' test1.sql  > /tmp/test_sed.log 

因为在命令行中 ` 的优先级大于sed命令本身。
`  `  中的内容会先于sed命令被识别,从而把``中的内容当作一条命令。
不管该命令存在或不存在,都是错误的,不能这么执行。

 sed -n '/START/,/END/p' test1.sql  > /tmp/test_sed.log 
表示将START END之间的所有内容输送到另一个文件中。
  评论这张
 
阅读(736)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018