LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4690|回复: 14

如何用shell删除文件里特定的行?

[复制链接]
发表于 2003-6-12 17:29:59 | 显示全部楼层 |阅读模式
例如
25%gfdghfhghgh

qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq

25%gfdkgjfkjgjkkk

qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq

25%agdfgdfgfdgg

qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
我该怎么做才能把25%开始的那行和下面的一个空行去掉?
发表于 2003-6-12 18:16:54 | 显示全部楼层
under command,use:
$for i in $(cat filename);do echo $i;done|sed '/^25/d'>tmp;rm filename;mv tmp;filename;cat filename
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
发表于 2003-6-12 18:40:02 | 显示全部楼层
$for i in $(cat filename);do echo $i;done

此法去空行,妙!
 楼主| 发表于 2003-6-12 19:42:00 | 显示全部楼层
$for i in $(cat filename);do echo $i;done为什么能去空行啊?
还有sed '/^25/d'不懂什么意思:),能不能解释一下啊,多谢,还是给我“渔”吧
 楼主| 发表于 2003-6-12 22:09:59 | 显示全部楼层
不行啊,转换以后格式都变了,可以试试下面的
25% threshold list: 358 chains with 68053 residues

thrsh      ID   naa   Res  Rfac Methd n_sid n_bck  n_naa  n_hlx  n_bta cmpnd
   25   1TRF_    76 -1.00  0.00     N    76    76      0     44      6  Troponin c (tr1c fragment) (apo form) (NMR, 1 structure)
   25   2PNI_    86 -1.00  0.00     N    86    86      0      3     27  Phosphatidylinositol 3-kinase (p85-alpha subunit, sh3 domain) (NMR, 26 structures)
   25   2PDE_    43 -1.00  0.00     N    42    42      0      5      0  Dihydrolipoamide acetyltransferase (e2p) subunit of the pyruvate dehydrogenase (pdh) multienzyme complex (pyruvate decarboxylase (e1p) dihydrolipoamide dehydrogenase (e3) 43 residue binding domain) (NMR, average structure)
   25   1EGR_    85 -1.00  0.00     N    85    85      0     31     20  Glutaredoxin (reduced) (NMR, 20 structures)
25% threshold list: 901 chains with 193407 residues

thrsh      ID   naa   Res  Rfac Methd n_sid n_bck  n_naa  n_hlx  n_bta cmpnd
   25   1UXD_    59 -1.00  0.00     N    59    59      0     29      0  fructose repressor
   25   1CFE_   135 -1.00  0.00     N   135   135      0     47     23  pathogenesis-related protein p14a
   25   1CFH_    47 -1.00  0.00     N    47    47      0      4      0  Coagulation factor ix (the gla and aromatic amino acid stack domains from residues 1 - 47) (NMR, 15 structures)
   25   1CFO_    68 -1.00  0.00     N    68    68      0      7      6  cytochrome c551.5
   25   1ULP_   152 -1.00  0.00     N   152   152      0      0     55  endoglucanase c
发表于 2003-6-12 22:36:27 | 显示全部楼层
1,当时按你的文件,是没问题的!
2,sed '/^25/d'是删除以25开头的行!
3,渔--在:
http://www.linuxsir.cn/bbs/showthread.php?threadid=21398
发表于 2003-6-12 23:17:59 | 显示全部楼层
try it,under command line:
$sed -n '/^[0-9a-z]/p' filename|sed '/25%/d'
解释:
第一个sed是显示以字符或者数字开头的行,也就是把空行给删除啦,第二个sed是删除含有25%这个模式的行.
你再试试看,有问题再说;)
 楼主| 发表于 2003-6-13 12:56:47 | 显示全部楼层
不行啊,它把25开始的那些行也删了,那是我的数据
发表于 2003-6-13 13:02:55 | 显示全部楼层
我该怎么做才能把25%开始的那行和下面的一个空行去掉?
说白啦~,你就是删除空行吧~~~,那么绕人;)
 楼主| 发表于 2003-6-13 13:21:59 | 显示全部楼层
搞定了,用sed -e '/^$/d' totallist | sed -e '/^25%/d'|sed -e '/^thrsh/d' > tmp就可以了:),你给的那个渔不错;)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表