K2021.2.5

12-29Linux进阶-1

12:36 文本处理的三驾马车

grep 文本搜索工具,正则表达式匹配模式搜索文本,并将匹配行打印

  1. less Data/example gtf | grep 'gene'
  2. less Data/example gtf | grep -W -f file | less -S #多关键词的搜索方法

正则表达式

12-30Linux进阶-2

03:00 sed

sed:流编辑器,一般用来对文本进行增删改查

用法:sed [-options] ‘script’ file(s)

常用参数:

-n 禁止显示所有输出内容,只显示经过sed处理的行(常用)

-e

-f 执行含有sed动作的文件

-r

-i 直接修改读取的文件内容,不输出

常见’script’ address:

2 :第2行

2,4:第2-4行

2,$:第2行到最后一行,¥表示最后

2~3:从第2行开始,每隔3行取一行

2,-4:从第2行到2+4行

/pattern/:匹配上pattern的行

[!]:表示否定,取反

a:append,在指定行的后面增加一行,内容为a后面接的字串

i:insert,在指定行的前面增加一行,内容为i后面接的字符串

d:delete,删除

c:change,改变

s:替换,使用格式为’s/pattern/new/[flages]’,把pattern替换成new,默认只替换一个,可以指定flags

y:转换,实现字符一对一转换,格式’y/inchars/outchars’

p:print,把匹配或修改过的行打印出来,通常与-n参数合用

只是把修改后的内容打印到屏幕,并没有修改源文件

sed ‘//d’ 在//之间放置需要删除行的关键词来实现删除行

^$ 表示空白行 sed ‘/^$/ d’

sed命令其他参数

-e:else

g:全局

12-30Linux进阶-3

awk

又称gawk,可对文本和数据进行处理

常见参数:-F,fields,设置字段分隔符

-v,var=value 定义awk程序中的一个变量及其默认值

用法:awk [options] ‘{script}’ file

{script}部分比较复杂,包含三种结构:

基础结构:’{script}’

匹配结构:’/pattern/{script}’

扩展结构:’BEGIN{script} {script} END{script}’

awk在读取一行文本时,会用预定义的字段分隔符划分每个数据字段,并分配给一个变量

  1. $0 代表整个文本行
  2. $1 代表文本行中的第1个数据字段
  3. $NF 代表文本行中的最后一个数据字段
  1. less -S Data/example.gtf | cut -f 9 | less -S #只能识别制表符
  2. less -S Data/example gtf | awk '{print $9}' | less -S #不仅制表符,空格也能识别并作为分隔符
  3. less -S Data/example gtf | awk -F '\t' '{print $9}' | less -S #仅识别制表符,不将空格作为分隔符
  4. less -S Data/example gtf | awk '/UTR/{print $0}' | less -S #匹配出现UTR的行。$0表示一整行

awk三段结构

  1. awk 'BEGIN{print "find UTR feature"} /UTR/{print $0} END{print "end"}'

awk 内置变量

FS:定义输入字段分隔符,Field Separator,同-F

RS:定义输入记录分隔符, Record separator

OFS:定义输出字段分隔符, Out Field separator

ORS:定义输出记录分隔符, Out Record separator

NF:数据文件中的字段总数,可以简单理解为列数

NR:已处理的输入记录数,可以简单理解为行数

也可以通过-V参数自定义变量或传递外部变量

制表符 \t

12-30Linux进阶-4

awk 条件和循环语句

if:条件判断

  1. awk '{ if(判断条件) {yes} else {no} }'

for 循环语句

  1. awk '{ for (循环条件) {循环语句} }'

单引号放外层,双引号放内层

int(x) 取靠近零一侧的整数部分

log(x) x的自然对数

** 平方