Linux 文本处理

Linux 文本处理-三驾马车

整理自生信技能树Linux课程笔记

grep

  • 文本搜索工具,使用正则表达式匹配模式搜索文本,并把匹配的行打印出来
  • 格式:grep [options] pattern file
  • 常见参数:
    • -w:word 精确查找某个关键词 pattern
    • -c:统计匹配成功的行的数量
    • -v:反向选择,输出没有匹配的行
    • -n:显示匹配成功的行所在的行号
    • -r:从目录中查找pattern
    • -e:指定多个匹配模式
    • -f:从指定文件中读取要匹配的pattern
    • -i:忽略大小写
正则表达式
  • 是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
    • ^ 行首
    • $ 行尾
    • . 换行符之外的任意单个字符
    • ? 匹配之前项0次或者一次
    • + 匹配1次或者多次
    • 通配符* 匹配1次或者多次
    • {n} 匹配n次
    • {n, } 匹配至少n次
    • {m,n} 至少m,最多n
    • [] 匹配任意一个
    • [^] 排除字符
    • | 或者
    • 特殊字符用转义符 \ 或者在pattern前加 -E
  • 示例
      1. 此处 less -SN -r Data/* 更为准确在这里插入图片描述在这里插入图片描述
      1. 一个字符前加一个**-e**,可以写成文本的形式,grep -w -n -f file在这里插入图片描述
      1. 反选

        在这里插入图片描述

sed

  • 对文本进行增删改查
  • 用法:sed [-options] ‘script’ file(s)
  • 常见参数:
    • -n:禁止显示所有输入内容,只显示经过sed处理的行
    • -e:直接在命令模式上进行sed的动作编辑,接要执行的一个或多个命令
    • -f:执行含有sed动作的文件
    • -r:sed的动作支持的扩展正则
    • -i:直接修改读取的文件内容,不输出
  • 用法:
    • sed [-options] ‘script’ file
    • sed [-options] [address] [!] command file
      • 常见 ‘script’ address
        • 2:第二行
        • 2,4:第 2 行到第 4 行
        • 2,$:第 2 行到最后一行
        • 2~3:从第 2 行开始,每隔 3 行取一行
        • 2,+4:第 2 行到 2+4 行
        • /pattern/:匹配上 pattern 的行
        • [!]:表示否定,取反。‘2!’ 表示除了第 2 行
      • 常见 ‘script’ command : 增删改查
        • a:append,在指定行的后增加一行,内容为 a 的后面接的字串
        • i:insert,在指定行的前增加一行,内容为 i 的后面接的字串
        • d:delete,删除某一行或者某几行,也可以指定删除匹配上的行
        • c:change,改变指定行的内容
        • s:更改或替换字符串,使用格式为 ‘s/pattern/new/[flags]’
        • y:转换,字符一对一
        • p:print,把匹配或修改过的行打印出来,通常与**–n**参数合用
    • 举例
        1. 三种都可在这里插入图片描述
        1. 指定pattern,不指定行号,默认所有在这里插入图片描述
        1. 指定行号,s/pattern/new/ 中的 /// 可换为其它相同符号在这里插入图片描述
        1. -n和p联用在这里插入图片描述
        1. 取反
        • 删除带有gi pattern的行并另存
          在这里插入图片描述
          在这里插入图片描述

awk

也叫gwak,编程语言,可对文本和数据进行处理
  • 常见参数:
    • -F:fields,设置字段分隔符
  • 用法:
    • awk [options] ‘{script}’ file
    • 基础架构:‘{script}’
    • 匹配结构:‘/pattern/{script}’
    • 扩展结果:‘BEGIN{script} {script} END{script}’
      • 遍历中间的 {script}
  • 在读取一行文本时,会用预定义的字段分隔符划分每个数据字段,并分配给一个变量
    • $0:代表整个文本行
    • $1:文本行中的第1个数据字段
    • $NF:文本行中的最后1个数据字段
    • 默认的字段分隔符是任意空白字符(如空格 or 制表符),也可以用 -F 参数自定义分隔符;默认输出来是空格
  • awk 内置变量
    • FS:定义输入字段分隔符,Field Separator,同 -F
    • RS:定义输入记录分隔符,Record Separator
    • OFS:定义输出字段分隔符,Out Field Separator
    • ORS:定义输出记录分隔符,Out Record Separator
    • NF:数据文件中的字段总数,可以简单理解为列数
    • NR:已处理的输入记录数,可以简单理解为行数
  • 示例
      1. 设置 OFS 以定义输出字段分隔符:
      • less -SN Data/example.gtf | awk ‘BEGIN{OFS=“:”} {print $9}’ | head -5
      1. 使用NR来打印行号:
      • less -SN Data/example.gtf | awk ‘BEGIN{FS=“\t”} {print NR,$9}’ | less -S
  • awk 条件和循环语句
    • if:条件判断
      • awk ’ { if (判断条件) { yes } else {no} } ’
      • less -S Data/example.gtf | awk ‘{if($3==“exon”) {print}}’ | less -S
    • for:循环语句
      • awk ’ { for (循环条件) {循环语句} } ’
  • awk 数学运算
    • +加、-减、*乘、/除、^幂、%取余
    • **平方
    • int(x) x的整数部分
    • long(x) x的自然对数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值