美文网首页
【Linux学习】— 8. 对文件的处理

【Linux学习】— 8. 对文件的处理

作者: lkj666 | 来源:发表于2021-02-21 20:08 被阅读0次

主要来源:兄弟连Linux视频教学Linux操作与生物信息——基因学苑
2021.2.18


1. 对文件的统计

wc 

2. 处理行

2.1 grep:提取行

    grep命令会将匹配内容所在的行输出到频幕上,支持正则表达式

  1. 正则表达式是包含匹配,即匹配搜索文件中字符所在的行/列;通配符是完全匹配,用来匹配文件名等
  2. find用来查找目录中是否存在某个文件,grep用来搜索文件中的内容

2.1.1 常用选项

  • -V:反选,打印没有匹配到的行
  • -n:显示行号
  • -c:显示总共有多少行被匹配到了
  • -E:开启扩展的正则表达式

2.1.2 实例

  1. 匹配空白行
grep -n  "^$" <文件名>
  1. 查看文件中基因树目
grep -c ">" <文件名>

2.2 split:按行分割文件

2.2.1 常用选项

  • l:指定切割后文件行数,默认是1000行
  • -a:新生成文件名保留字符数,默认是2
  • --additional-suffix=SUFFIX:追加新生成文件名后缀

2.2.2 实例

按200行切割文件,并指定

split -l 200 -a 2 <文件名> --additional-suffix=.fa

3. 处理列

3.1 cut

    对具有统一分割符的列进行截取

3.1.1 常用选项

  • -f列号:提取第几列
  • -d:指定分割符,默认是\t

3.1.2 实例

提取第一至三列,分割符为:的列

cut -d ":" -f 1,3 <文件名>

cut的域分隔符只能是单个字符,而awk是多个字符

3.2 awk

    awk是一个强大的文本处理工具,相对于grep的查找,sed的编辑,awk能够把文件逐行读入,并默认以空格为分割符将每行切片,可以进行多种处理。

awk处理的文本也需要具有统一的格式

3.2.1格式和常用选项

1. 格式
判断条件1,然后执行动作1,依次类推

awk '条件1{动作1} 条件2{动作2}...' <文件名>

2. 常用条件

  • 当条件为空时,指全部内容
  • BEGIN:指在文件开始部位
  • END:指在文件结束部位

3. 选项

  • -F:指定分割符

4. 实例
4.1 输出文件blast_m8.out所有的行

awk '{print $0}' blast_m8.out

4.2 输出文件blast_m8.out的第1列和第3列

awk '{print $1,$3}' blast_m8.out

逗号,表示空格,可以用其他分隔符替代,比如制表符“\t”

4.3 输出文件blast_m8.out最后一列

awk '{print $NF}' blast_m8.out

4.4 文件passwd.list的分割符为:,输出第一列和最后一列,并添加路径

awk -F ":" '{print “account:”$1 "\n" "path:"$NF}' passwd.list

可以添加内容,但是需要用到双引号""

4.5 对blast_m8.out文件进行条件筛选后输出符合条件的行

awk '{if ($>=80 && $4>=100) print $0}' blast_m8.out

4.6. 对blast_m8.out文件进行筛选后,输出符合条件的第一列,并且排序,同时去重复,最后进行统计

awk '{if ($>=80 && $4>=100) print $1}' blast_m8.out | sort -n -k1 | uniq | wc  

4. sort:对文件中的内容排序

4.1 作用

    sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

4.2 常用选项

  • -t:指定分割符,默认是\t
  • -k:指定字符范围,后面接数字
  • -n:以数值型进行排序
  • -r:进行降序排列
  • -f:忽略大小写
  • -u:去除重复的内容

4.3 实列

  1. 文件分割符是\t,按第三列的数字进行降序排列
sort -n -k 3 -r <文件名> > <降序排列>
  1. 文件分割符是空格,按照第一列的首字母大小输出
sort -t ' ' -k 1 <文件名> > <升序排列>
  1. 文件分割符是空格,先是按照第二列的数字大小输出,若第二列数字相同则按照第三列数字大小输出
sort -n -t ' ' -k 2 -k 3 <文件名> > <双排序文件>
  1. 文件分割符是\t按数字后排序,输出不重复的行
sort -n -u <文件名>

5. uniq:用于报告文件或者忽略文件中的重复行,一般与sort命令结合使用

5.1 常用选项

  • -c:显示该行重复出现的次数
  • -d:显示重复出现的行
  • -u::仅显示出一些行

5.2 实例

  1. 删除重复行
uniq <file.txt>
或者
sort <file.txt> | uniq
或者
sort -u <file.txt>
  1. 统计各行再文件中出现的次数
sort <file.txt> | uniq -c
  1. 在文件中找到重复的行
sort <file.txt> | uniq -d

6. sed:流编辑器

    每次读入文件的一行,然后进行格式化的处理,之后输出到屏幕上,不改变原文件内容。

6.1 常用选项

  • -e:允许应用多条sed命令编辑,用分号隔开
  • -i:直接在原文上修改
  • -f:接模式的脚本文件,例如依次需要替换多个目标时,可以将这些模式写入一个文件
  • -n:输出经sed命令处理过的内容到屏幕上,原文件不变

6.2 实例

  1. 直接在原文替换内容,并生成一个原文件的备份文件
sed -i ".bak" 's/GI/gi/g' <seq.fna>

注意:g可以改为具体的数字,表示只替换最开始数字出现的次数

  1. 删除文件中的空白行
sed -e '/^\s+*$/d' <seq_with_space.fna>
  1. 打印文件的第3行到第5行
sed -n '3,5p' <seq.fna>
  1. 删除第2行到4行
sed '2,4d' <seq.fna>
  1. 只替换10行到200行内匹配到的内容
sed -e '10,200s/gi/GI/g' <seq.fna>

注:在10,200s后面加上!表示取反的行进行操作

  1. 将文件中的大写字母替换为相应的小写字母
sed -e '/>/!y/ATGC/atgc/' <seq.fna>
或者
tr [ATGC] [atgc] < <seq.fna>
  1. 只替换固定的行范围时,可以用相应行的具体字符,用//包含即可,两个行匹配之间用,分开
  2. y模式可以同时逐个替换
  1. 将文件名添加到相应文件的开头
#!/bin/bash
for file in *
do
    sed -i "1>$file" $file
done

相关文章

  • 【Linux学习】— 8. 对文件的处理

    主要来源:兄弟连Linux视频教学、Linux操作与生物信息——基因学苑2021.2.18 1. 对文件的统计 2...

  • Liunx 中sed、grep、cut命令

    Linux下一切皆文件,对Linux的操作就是对文件的处理。 把最近学习的liunx命令做一个总结,方便复习使用。...

  • Linux之常用文件操作命令

    前言 继Linux命令基础 后.记录整理了Linux较为常用的处理文件目录的命令. 文件处理命令 Linux 下一...

  • python文件操作学习笔记

    本文是Python文件处理的学习笔记。 文件的概念 Linux 系统中,一切皆文件。文件,也是一个文件对象。文件的...

  • Linux学习-文件处理命令

    文件处理命令 touch 创建空文件/bin/touchtouch file1 file2 创建了2个文件touc...

  • 汇总这几天学习linux的命令【简要版】

    【本人linux初学者,记录自己学习的进程,欢迎各位赐教,指出错误,共同学习】 一、文件处理命令 【1】目录处理命...

  • Let's awk!

    awk是Linux自带的一种文本处理工具,能够快速有效地对Linux下的文本文件进行处理,尤其针对较大的文本文件。...

  • Linux文件操作

    文件操作 (Linux文件操作)) [文件|目录] Linux文件操作:为了对文件和目录进程处理,你需要用到系统...

  • Linux达人养成计划 I--学习笔记

    本篇涉及的知识点 Linux简介Linux安装Linux命令基本格式及文件处理命令Linux 文件搜索命令Linx...

  • Linux 文件处理

    创建文件 touch filename 复制文件 cp source destination 当 source 和...

网友评论

      本文标题:【Linux学习】— 8. 对文件的处理

      本文链接:https://www.haomeiwen.com/subject/alpgxltx.html