Linux下常识
- \t 制表符(Tab键)
- \n 换行符(Enter键)
- Backspace键不起作用时,可以Ctrl+Backspace
- 成对的符号最好成对先打然后再打里面的内容,比如‘’,"",()
- --help 调用帮助文档
- 软链接文档应该是浅蓝色,红色就有问题(前提是之前修改过命令行配色)
sed
sed [-option] 'script' file
option参数用的较少,其中-e是执行多个命令。主要设置就是script参数的操作:
script包含3部分:[address][!]command
address是指出操作的位置:
2 表示第2行
2,4 表示第2-4行
2,$ 表示第2到最后一行
2 ~3 表示从第2行开始,每隔3行取一行
/pattern/ 表示能匹配上pattern的行
[!] 表示取反
command是怎么操作:
a 指定位置后增加一行,内容为a后面的字符串
i 指定位置前增加一行,内容为i后面的字符串
d 删除某几行
c 修改一整行的内容
s/old/new/[flags] 把整个old内容用new内容替换(///可以换成###,---等等),且默认只替换第一个,要全部替换要用g
y/ATCG/TAGC/ 把ATCG的每个字符一一对应的替换为TAGC,所以可以用来取反向互补链
sed练习:
先看原图: cat readme.txt
图片.png
要增加一行内容: cat readme.txt |sed '1a welcome to a new world'
图片.png
要在每行前都增加一行相同的内容:cat readme.txt |sed '1,3i welcome to a new world'
图片.png
要把某几行用相同的内容替换掉:cat readme.txt |sed -e '1,3i welcome to a new world' -e '1,3d'
图片.png
要把整个文章里的某些单词替换成另外的单词:cat readme.txt | sed 's/to/TO/g'
图片.png
猜一猜:cat readme.txt | sed '/^$/d'是啥意思?
图片.png
awk是一个编程语言
既可以像grep和sed一样对文本处理,也可以对数据进行处理,可以配合if等语句一起使用,强大!
1、最基本结构:awk [option] '{script}' file
2、复杂一点的结构:awk [option] '/pattern/{script}' file
3、再复杂一点的结构:awk [option] 'BEGIN{script}{script}END{script}' file
工作原理:awk在处理每一行文本时,是首先对文本进行字段切割,然后按字段逐一进行读取,默认的字段分隔符是空格或制表符。所以,$0代表整行文本,$1代表第一个字段,以此类推,$NF代表最后一个字段。(似曾相识啊,R语言里面也有类似的语法)
awk练习:
先上原数据:less -S example.gtf
图片.png
为了看清楚是换行符还是空格:cat -A example.gtf | less -S
图片.png
取第9-10列内容:
less -S example.gtf | awk '{print $9,$10}' | less -S
图片.png
想要自己指定分隔符,比如只要制表符:less -S example.gtf | awk -F '\t' '{print $9}' | less -S
图片.png
设置把符合筛选条件的行输出,则要用到if语句:
less -S example.gtf | awk '{if($3 == "gene") print $0}' | less -S
图片.png
如果只是匹配gene的话,只要带有gene的字段就全都输出了:less -S example.gtf | awk '/gene/{print $0}' | less -S
图片.png
搜一搜是什么意思:
less -S example.gtf | awk 'BEGIN{FS="\t";OFS="\t"} {gsub("gene","Gene",$3);print $0}' |less -S
图片.png
网友评论