专栏首页生信宝典Linux学习 - 文件内容操作(1)

Linux学习 - 文件内容操作(1)

Linux下文件内容操作

常用的文件内容操作有文件压缩解压缩、文件大小行数统计、文件内容查询等。

gzip: 压缩文件; gunzip: 解压缩文件

# gzip -c 把压缩的文件输出到标准输出 (一般是屏幕)
# '>' 输出重定向,输出写入文件

ct@ehbio:~/ehbio_project$ gzip -c ehbio.fa >ehbio.fa.gz

# 多了一个.gz文件
ct@ehbio:~/ehbio_project$ ls
ehbio3.fa  ehbio4.fa  ehbio5.fa  ehbio.fa  ehbio.fa.gz  second.fa

#解压缩
ct@ehbio:~/ehbio_project$ gunzip ehbio.fa.gz
gzip: ehbio.fa already exists; do you wish to overwrite (y or n)? y
ct@ehbio:~/ehbio_project$ ls
ehbio3.fa  ehbio4.fa  ehbio5.fa  ehbio.fa  second.fa

wc (word count): 一般使用wc -l获取文件的行数

# 输出文件有14行
ct@ehbio:~/ehbio_project$ wc -l ehbio.fa
14 ehbio.fa

获取文件中包含大于号 (>)的行, grep (print lines matching a pattern)。grep的用法很多,支持正则表达式匹配,这里不展开,可以自己查阅资料,或在后期的教程涉及到时再学习。

ct@ehbio:~/ehbio_project$ grep '>' ehbio.fa
>SOX2
>OCT4
>NANOG
>mYC HAHA

# 获取包含>的行的行数 (-c: count lines)
ct@ehbio:~/ehbio_project$ grep -c '>' ehbio.fa
4

# 是不是还记得当时新建文件时,末尾多了一行end,删除end所在行
ct@ehbio:~/ehbio_project$ less ehbio.fa 

# -v: 不输出匹配上的行
ct@ehbio:~/ehbio_project$ grep -v 'end' ehbio.fa >ehbio6.fa
ct@ehbio:~/ehbio_project$ cat ehbio6.fa 
>SOX2
ACGTCGGCGGAGGGTGGSCGGGGGGGGAGAGGT
ACGATGAGGAGTAGGAGAGAGGAGG
>OCT4
ACGTAGGATGGAGGAGAGGGAGGGGGGAGGAGAGGAA
AGAGTAGAGAGA
>NANOG
ACGATGCGATGCAGCGTTTTTTTTTGGTTGGATCT
CAGGTAGGAGCGAGGAGGCAGCGGCGGATGCAGGCA
ACGGTAGCGAGTC
>mYC HAHA
ACGGAGCGAGCTAGTGCAGCGAGGAGCTGAGTCGAGC
CAGGACAGGAGCTA

替换文件中的字符: sed是一个功能强大的文件内容编辑工具,常用于替换、取得行号等操作。

# 第一个错误,漏掉了文件名
# 程序静止在这,等待用户的进一步输入
# ctrl+c杀掉当前命令
ct@ehbio:~/ehbio_project$ sed 's/ HAHA//' | tail -n 3

^C

# 第二个错误,文件名和单引号之间没有空格,使得sed判断命令错误

ct@ehbio:~/ehbio_project$ sed 's/ HAHA//'ehbio.fa  | tail -n 3
sed:-e 表达式 #1,字符 11:“s”的未知选项

# 正确操作,

ct@ehbio:~/ehbio_project$ sed 's/ HAHA//' ehbio.fa  | tail -n 4
>mYC
ACGGAGCGAGCTAGTGCAGCGAGGAGCTGAGTCGAGC
CAGGACAGGAGCTA
end

另外一个方式,去除HAHA,使用cut命令 (cut更适合与矩阵操作,去除其中的一列或者多列)。

-f: 指定取出哪一列,使用方法为-f 2 (取出第2列),-f 2-5 (取出第2-5列),-f 2,5 (取出第2和第5列)。

-d: 设定分隔符, 默认为TAB键。如果一行没有指定的分隔符,整行都为第一列。

ct@ehbio:~/ehbio_project$ cut -f 1 -d ' ' ehbio.fa | tail -n 4
>mYC
ACGGAGCGAGCTAGTGCAGCGAGGAGCTGAGTCGAGC
CAGGACAGGAGCTA
end

本文分享自微信公众号 - 生信宝典(Bio_data),作者:陈同

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-06-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 原来你是这样的软连接

    生信宝典
  • Linux学习-常见错误和快捷操作

    Linux下命令的一些异常情况 命令不全:在命令没有输入完 (引号或括号没有配对),就不小心按下了Enter键,终端会提示出一个>代表命令不完整,这是可以继续输...

    生信宝典
  • Linux学习-常见错误和快捷操作

    Linux下命令的一些异常情况 命令不全:在命令没有输入完 (引号或括号没有配对),就不小心按下了Enter键,终端会提示出一个>代表命令不完整,这是可以继续输...

    生信宝典
  • 0713-6.2.0-HBase的Thrift Server启动问题

    配置Hue集成HBase的过程中,添加角色实例HBase Thrift Server后,把HBase Thrift身份验证(hbase.thrift.secur...

    Fayson
  • 隐藏路由器的WIFI信号,防蹭网

    进入路由器的管理界面 ? ? ?  最后别忘了 ? 现在信号隐藏了,现在说一下如何用手机连接隐藏的路由器 ? ? ?

    杨奉武
  • 【腾讯云的1001种玩法】在腾讯云服务器搭建FBCTF平台,FBCTF简体中文汉化版,FBCTF更新缓存

    一步一步教你在腾讯云服务器搭建FBCTF平台,FBCTF简体中文汉化版,FBCTF更新缓存,教程详细,小白也能轻松学会。

    王启航
  • 为什么说英语是一个码农成熟的标志?

    作为在中国工作的程序员,不懂得英语似乎也不妨碍找到好工作,升职加薪。但程序员这个工种则稍有不同,因为程序,尤其是高级语言,基本上都是由英语 和数字表达式构成的。...

    架构师小秘圈
  • 浅谈程序员的英语学习

    作为在中国工作的程序员,不懂得英语似乎也不妨碍找到好工作,升职加薪。但程序员这个工种则稍有不同,因为程序,尤其是高级语言,基本上都是由英语和数字表达式构成的。英...

    s055523
  • 程序员修神之路--kubernetes是微服务发展的必然产物

    在很多项目的发展初期,都是小型或者大型的单体项目,部署在单台或者多台服务器上,以单个进程的方式来运行。这些项目随着需求的递增,发布周期逐渐增长,迭代速度明显下降...

    架构师修行之路
  • Ubuntu18.04、Centos7静态IP

    静态IP:zhang@Ubuntu:~$ sudo vim /etc/netplan/50-cloud-init.yaml

    Linux

扫码关注云+社区

领取腾讯云代金券