K2021.2.5
12-29Linux进阶-1
12:36 文本处理的三驾马车
grep 文本搜索工具,正则表达式匹配模式搜索文本,并将匹配行打印
less Data/example gtf | grep 'gene'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在读取一行文本时,会用预定义的字段分隔符划分每个数据字段,并分配给一个变量
$0 代表整个文本行$1 代表文本行中的第1个数据字段$NF 代表文本行中的最后一个数据字段
less -S Data/example.gtf | cut -f 9 | less -S #只能识别制表符less -S Data/example gtf | awk '{print $9}' | less -S #不仅制表符,空格也能识别并作为分隔符less -S Data/example gtf | awk -F '\t' '{print $9}' | less -S #仅识别制表符,不将空格作为分隔符less -S Data/example gtf | awk '/UTR/{print $0}' | less -S #匹配出现UTR的行。$0表示一整行
awk三段结构
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:条件判断
awk '{ if(判断条件) {yes} else {no} }'
for 循环语句
awk '{ for (循环条件) {循环语句} }'
单引号放外层,双引号放内层
int(x) 取靠近零一侧的整数部分
log(x) x的自然对数
** 平方
