文本编辑器vim

QQ图片20210721222654.png
可以编辑原有文件或直接生成新文件

PS:在使用vim时随时注意大小写的锁定状态

vimtutor zh_CN:查看中文帮助文档
查看帮助:
http://linux.51yip.com/
https://man.linuxde.net/

命令模式

1)vim FILENAME进入的默认模式
2)可以移动光标
3)可以剪切、复制、粘贴

移动光标

方向键 上下左右移动 h(←)j(↓)k(↑)l(→) 上下左右移动
^或0 到所在行的开头 $ 到所在行的末尾
num+方向键/hjkl 数字+方向进行快速移动
ctrl+f 向下翻页 ctrl+b 向上翻页
gg或[[ 快速到文件第一行的第一个字符 G或]] 快速到文件最后一行的第一个字符

剪切、复制与粘贴

x 剪切一个字符 num+x 连续剪切多个字符
dd 剪切所在行 num+dd 剪切所在行及向下共num行
yy 复制光标所在行 num+yy 复制所在行及向下共num行
p 在当前行的下面进行粘贴 P 在当前行的上面进行粘贴

撤销

u 复原前一个动作(可连续撤销) ctrl+r 重做上一个动作

编辑模式

1)输入i后进入编辑模式(左下角有— INSERT —提示)
2)多种进入的模式:i/a/o/I/A/O
3)按esc键退出该模式
4)在编辑模式下即可正常的编辑、修改文本内容

末行模式

1)在命令模式下输入”:”进入
2)按esc键退出该模式
3)在该模式下可以设置、查询、替换、保存并退出
4)所有字符均要以英文输入法(半角)输入

保存与退出

wq 保存并退出 q 直接退出(如有编辑却未保存会报错)
q! 不保存修改,强制退出 wq! 保存并强制退出

set系列

set nu 显示行号 set nonu 取消行号
set list 显示不可见字符(分辨制表符与空格) set ff=unix 将文件格式转换为unix格式

查询与替换

/KEYWORD 按关键词查询 %s/查询词/替换词/g 全局替换
n 向下查找 s///g 替换光标所在行
N 向上查找 s/// 只替换光标所在行的第一次

键盘图

QQ图片20210723112006.png

grep

grep [options] pattern file 使用**正则表达式**匹配模式搜索文本,并把匹配的行打印出来
-w(word) 精确查找某个关键词pattern
-c 统计匹配成功的行的数量
-v 反向选择,即输出没有没有匹配的行
-n 显示匹配成功的行所在的行号
-r 从目录中查找pattern
-e 指定多个匹配模式pattern,相当于或
-f 从指定文件中读取要匹配的pattern,将多个pattern写入一个文件后进行匹配
-i 忽略大小写
-E 按正则表达式理解

正则表达式

是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑

^ 行首 $ 行尾
. 换行符之外的任意单个字符 ? 匹配之前项0次或者一次
+ 匹配之前项1次或者多次 * 匹配之前项0次或者多次
{n} 匹配n次 {n,} 匹配至少n次
{m,n} 至少m,最多n [] 匹配任意一个
[^] 排除字符 | 或者

sed

sed [-options] ‘script’ file(s) 流编辑器,用来对文本进行增删改查
-n 取消默认输出,只显示经过sed处理或匹配的行(常用)
-e 直接在命令模式上进行sed的动作编辑,接要执行的一个或者多个命令
-i 直接修改读取的文件内容,不输出

‘script’ = ‘[address][!] command’

address 以行为单位
n 第n行
n,m 第n行到第m行
n,$ 第n行到最后一行
n~m 第n行开始,每隔m行取一行
n,+m 从第n行到第n+m行
/pattern/ 匹配上pattern的
[!] 否定,取反
^.\{n\} 每行开头n个字符

奇偶行
设置步长
‘1~2p’—>第一行开始每隔两行—>奇数行
‘2~2p’—>第二行开始每隔两行—>偶数行

command
a(append) 在指定行的后增加一行,内容为 a 的后面接的字串
i(insert) 在指定行的前增加一行,内容为 i 的后面接的字串
d(delete) 删除某一行或者某几行,也可以指定删除匹配上的行
c(change) 改变指定行的内容,内容为 c 的后面接的字串
s/pattern/new/[flags] 把pattern替换成new,默认只替换一个,可以指定flags
y/inchars/outchars/‘ 实现字符一对一转换
p(print) 把匹配或修改过的行打印出来,通常与–n参数合用

大小写转换

首字母变大写 sed ‘s/\b[a-z]/\u&/g’ filename
小写变大写 sed ‘s/[a-z]/\u&/g’ filename
大写变小写 sed ‘s/[A-Z]/\l&/g’ filename

awk

1)在读取一行文本时,会用预定义的字段分隔符划分每个数据字段,并分配给一个变量
2)默认的字段分隔符是任意空白字符(如:空格 or 制表符),也可以用 -F 参数自定义分隔符

awk [options] ‘{script}’ file 对文本和数据进行处理
-F(fields) 设置字段分隔符(默认是空白字符)
-v,var=value 定义awk程序中的一个变量及其默认值

‘{script}’

基础结构 ‘ {script} ‘
匹配结构 ‘ /pattern/{script} ‘
扩展结构 ‘BEGIN{script} {script} END{script}’

$0 代表整个文本行
$1 代表文本行中的第1个数据字段
$NF 代表文本行中的最后一个数据字段

内置变量

FS(Field Separator) 定义输入字段分隔符,同 –F
RS(Record Separator) 定义输入记录分隔符
OFS(Out Field Separator) 定义输出字段分隔符
ORS(Out Record Separator) 定义输出记录分隔符
NF 数据文件中的字段总数,可以简单理解为列数
NR 已处理的输入记录数,可以简单理解为行数
-v 自定义变量或传递外部变量

if:条件判断

awk ‘ { if (判断条件) {yes} else {no} } ‘

for:循环语句

awk ‘ { for (循环条件) {循环语句} }

数学运算

+ - * /
^ ** 平方 % 取余

int(x):x的整数部分,取靠近零一侧的值
log(x):x的自然对数

奇偶行

行号对2取模,如果余数为0,则表示NR为偶数,否则NR为奇数
awk ‘(NR%2)’ test1.txt —>NR%2==1的行—>奇数行
awk ‘!(NR%2)’ filename —>NR%2!=1的行—>偶数行

图片引用自生信技能树团队