专栏名称: 生信宝典
生物信息分析入门、晋级和经验分享。Linux、R、Python学习教程;高通量测序数据分析学习教程;生信软件安装教程。所有内容均为原创分享,致力于从基础学习到提高整个过程。
目录
相关文章推荐
生物探索  ·  Nature | ... ·  2 天前  
BioArt  ·  PNAS | ... ·  3 天前  
BioArt  ·  DeepSeek+Pubmed终于联手了! ·  3 天前  
51好读  ›  专栏  ›  生信宝典

Linux学习 - SED操作,awk的姊妹篇

生信宝典  · 公众号  · 生物  · 2017-09-27 07:33

正文

awk sed 想一对兄妹,一个 出现 ,就会问起另一个。现在,都来了。

sed基本参数解释

sed是 stream editor 的简称,擅长对文件进行各种正则操作、插入操作、替换操作和删除操作,可以全局,可以指定特定范围的行或者特定特征的行。

s/pat/replace/ : 正则替换

前插行 i , 后插行 a , 替换行 c , 删除行 d , 输出行 p

N : 读入下一行,同时存储; n :读入下一行,抛弃当前行

常见操作

  • 替换特定的文本

ct@ehbio:~/SXBD$ cat mat
ID    2 cell    4 cell    8 cell    embryo
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5
c-Myc    2    3    4    5
Tet1_3    2    3    4    5
ct@ehbio:~/SXBD$ sed 's/ /_/' mat
ID    2_cell    4 cell    8 cell    embryo
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5
c-Myc    2    3    4    5
Tet1_3    2    3    4    5
ct@ehbio:~/SXBD$ sed 's/ /_/g' mat
ID    2_cell    4_cell    8_cell    embryo
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5
c-Myc    2    3    4    5
Tet1_3    2    3    4    5
  • 获得逗号分隔的一组数

ct@ehbio:~/SXBD$ echo `seq 1 10` | sed 's/ /,/g'
1,2,3,4,5,6,7,8,9,10
  • 针对指定行替换

ct@ehbio:~/SXBD$ sed '2,$ s/_[0-9]//g' mat 
ID    2 cell    4 cell    8 cell    embryo
Pou5f1    2    3    4    5
Nanog    2    3.2    4.3    5
c-Myc    2    3    4    5
Tet1    2    3    4    5
  • 替换特定出现位置

# 替换第一个空格
ct@ehbio:~/SXBD$ sed 's/ /_/1' mat
ID    2_cell    4 cell    8 cell    embryo
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5
c-Myc    2    3    4    5
Tet1_3    2    3    4    5
# 替换第二个空格
ct@ehbio:~/SXBD$ sed 's/ /_/2' mat
ID    2 cell    4_cell    8 cell    embryo
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5
c-Myc    2    3    4    5
Tet1_3    2    3    4    5
# 替换第二个及以后的空格
ct@ehbio:~/SXBD$ sed 's/ /_/2g' mat
ID    2 cell    4_cell    8_cell    embryo
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5
c-Myc    2    3    4    5
Tet1_3    2    3    4    5
  • 给序列起名字

ct@ehbio:~/SXBD$ cat seq
ACDGTFGGCATGCDTGD
ACDGAGCDTAGCDGTA
CAGDTAGDCTADTG
ct@ehbio:~/SXBD$ sed = seq
1
ACDGTFGGCATGCDTGD
2
ACDGAGCDTAGCDGTA
3
CAGDTAGDCTADTG
# 同时缓冲两行,但只对第一行行首操作
ct@ehbio:~/SXBD$ sed = seq | sed 'N;s/^/>/;'
>1
ACDGTFGGCATGCDTGD
>2
ACDGAGCDTAGCDGTA
>3
CAGDTAGDCTADTG
  • 给文件增加标题行

ct@ehbio:~/SXBD$ tail -n +2 mat | sort -k2,2n
c-Myc    2    3    4    5
Nanog_1    2    3.2    4.3    5
Pou5f1_1    2    3    4    5
Tet1_3    2    3    4    5

# 1 表示第一行
# i 表示插入,在指定行前面插入新行
ct@ehbio:~/SXBD$ tail -n +2 mat | sort -k2,2n | sed '1 i ID\t2_cell\t4_cell\t8_cell\tembryo'
ID    2_cell    4_cell    8_cell    embryo
c-Myc    2    3    4    5
Nanog_1    2    3.2    4.3    5
Pou5f1_1    2    3    4    5
Tet1_3    2    3    4    5
  • 提取特定或指定范围的行

# -n是必须的,阻止程序自动输出匹配行,不然会导致重复输出
ct@ehbio:~/SXBD$ sed -n '2,4p' mat
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5
c-Myc    2    3    4    5
ct@ehbio:~/SXBD$ sed -n '4p' mat
c-Myc    2    3    4    5
  • 提取符合特定模式的行

ct@ehbio:~/SXBD$ sed -n '/_/ p' mat
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5
Tet1_3    2    3    4    5
ct@ehbio:~/SXBD$ sed -n '/-/ p' mat
c-Myc    2    3    4    5
  • 去除文件中的空行

ct@ehbio:~/SXBD$ cat mat
ID    2 cell    4 cell    8 cell    embryo
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5

c-Myc    2    3    4    5
Tet1_3    2    3    4    5
# 空行就是只有行首和行尾的行
ct@ehbio:~/SXBD$ sed '/^$/d' mat
ID    2 cell    4 cell    8 cell    embryo
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5
c-Myc    2    3    4    5
Tet1_3    2    3    4    5
  • 原位删除

ct@ehbio:~/SXBD$ cat mat
ID    2 cell    4 cell    8 cell    embryo
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5

c-Myc    2    3    4    5
Tet1_3    2    3    4    5

# -i 参数的使用
ct@ehbio:~/SXBD$ sed -i '/^$/d' mat
ct@ehbio:~/SXBD$ cat mat
ID    2 cell    4 cell    8 cell    embryo
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5
c-Myc    2    3    4    5
Tet1_3    2    3    4    5
  • 删除指定范围的行

ct@ehbio:~/SXBD$ cat mat
ID    2 cell    4 cell    8 cell    embryo
Pou5f1_1    2    3    4    5
Nanog_1    2    3.2    4.3    5
c-Myc_2    2    3    4    5
Tet1_3    2






请到「今天看啥」查看全文