vim编辑器
vi ===> vim 文件编辑器
# vim /boot/grub2/grub.cfg
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
命令模式:
a. 光标定位
hjkl
0 $
gg G
3G 进入第三行
/string(n N 可以循环的) 快速定位到某一行
b. 文本编辑(少量)
y 复制 yy 3yy ygg yG (以行为单位)
d .删除 dd 3dd dgg dG (以行为单位)
p 粘贴
x 删除光标所在的字符
D 从光标处删除到行尾
u undo撤销
^r redo重做
r 可以用来修改一个字符
c. 进入其它模式
a 进入插入模式
i 进入插入模式
o 进入插入模式
A 进入插入模式
: 进入末行模式
^v 进入可视块模式
R 进入替换模式
插入模式:
^p 唯一补齐
末行模式:
a. 保存退出
:10 进入第10行
:w 保存
:q 退出
:wq 保存并退出
:w! 强制保存
:q! 不保存并退出
:wq! 强制保存退出
:x 保存并退出
b. 查找替换
:范围 s/old/new/选项
:1,5 s/Note/yyy/ 从1-5行的Note 替换为yyy
:5,$ s/Note/yyy/ $表示最后一行
:1,$ s/to/xxx/g = :% s/to/xxx/g %表示全文 g表示全局
:4,9 s/^#// 4-9行的以#开头的替换为空
:% s#/dev/sda#/var/ccc#g
:,8 s/to/xxx/ 从当前行到第8行
c. 读入文件/写文件
:w
:w /aaa.txt 另存为/aaa.txt
:1,3 w /2.txt
:1 w! /root/ccc.txt 如果目标文件已经存在则需要加!号
:r /etc/hosts
d. 设置环境
临时设置:
:set nu 设置行号
:set ic 不区分大小写
:set ai 自动缩进
:set list
:set nonu 取消设置行号
:set noic
永久的环境:
/etc/vimrc 影响所有系统用户
~/.vimrc 影响某一个用户
# vim ~/.vimrc # 在家目录下新增一个文件,输入下述内容
set ic
set nu
# vim -O /etc/hosts /etc/grub.conf ^w 按两次切换
# vimdiff grub.conf /etc/grub.conf 对比文件,^w 按两次切换
# vim -p /etc/hosts /etc/grub.conf ^PgUp, ^PgDn
-
文本处理三剑客
-
sed命令
流式编辑器,主要擅长对文件的编辑操作,我们可以事先定制好编辑文件的指令,然后让sed自动完成对文件的整体编辑
# 用法
sed 选项 '定位+命令' 文件路径
# 选项
-n 取消默认输出
-r 支持扩展正则元字符(由于尚未学习正则,所以此处暂作了解)
-i 立即编辑文件
# 定位
行定位:
1定位到第一行
1,3代表从第1行到第3行
不写定位代表定位所有行
正则表达式定位:
/egon/ 包含egon的行
/^egon/ 以egon开头的行
/egon$/以egon结尾的行
数字+正则表达式定位
"1,8p"代表打印1到8行,
"1,/egon/p"则代表取从第1行到首次匹配到/egon/的行
# 命令
d
p
s///g
命令可以用;号连接多多条,如1d;3d;5d代表删除1,3,5行
-
awk命令
awk主要用于处理有格式的文本,例如/etc/passwd这种
# 用法
awk 选项 'pattern{action}' 文件路径
# 选项
-F 指定行分隔符
# 工作流程
awk -F: '{print $1,$3}' /etc/passwd
1、awk会读取文件的一行内容然后赋值给$0
2、然后awk会以-F指定的分隔符将该行切分成n段,最多可以达到100段,第一段给$1,第二段给$2,依次次类推
3、print输出该行的第一段和第三段,逗号代表输出分隔符,默认与-F保持一致
4、重复步骤1,2,3直到文件内容读完
# 内置变量
$0 一整行内容
NR 记录号,等同于行号
NF 以-F分隔符分隔的段数
# pattern可以是
/正则/
/正则/ # 该行内容匹配成功正则
$1 ~ /正则/ # 第一段内容匹配成功正则
$1 !~ /正则/ # 第一段内容没有匹配成功正则
比较运算:
NR >= 3 && NR <=5 # 3到5行
$1 == "root" # 第一段内容等于root
# action可以是
print $1,$3
grep擅长过滤内容
# 用法
grep 选项 '正则' 文件路径
# 选项
-n, --line-number 在过滤出的每一行前面加上它在文件中的相对行号
-i, --ignore-case 忽略大小写
--color 颜色
-l, --files-with-matches 如果匹配成功,则只将文件名打印出来,失败则不打印
通常-rl一起用,grep -rl 'root' /etc
-R, -r, --recursive 递归
# 示例
[root@localhost ~]# grep '^root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# grep -n 'bash$' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
44:egon:x:1000:1000:egon:/home/egon:/bin/bash
[root@localhost ~]# grep -rl 'root' /etc
# grep也支持管道,我们可以发现三剑客命令都支持管道
[root@localhost ~]# ps aux |grep ssh
root 968 0.0 0.2 112908 4312 ? Ss 14:05 0:00 /usr/sbin/sshd -D
root 1305 0.0 0.3 163604 6096 ? Ss 14:05 0:00 sshd: root@pts/0
root 1406 0.0 0.3 163600 6240 ? Ss 14:05 0:00 sshd: root@pts/1
root 2308 0.0 0.0 112724 984 pts/1 R+ 15:30 0:00 grep --color=auto ssh
[root@localhost ~]# ps aux |grep [s]sh
root 968 0.0 0.2 112908 4312 ? Ss 14:05 0:00 /usr/sbin/sshd -D
root 1305 0.0 0.3 163604 6096 ? Ss 14:05 0:00 sshd: root@pts/0
root 1406 0.0 0.3 163600 6240 ? Ss 14:05 0:00 sshd: roo