文本编辑器vim

可以编辑原有文件或直接生成新文件
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/// | 只替换光标所在行的第一次 |
键盘图

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的行—>偶数行
图片引用自生信技能树团队
