vim 文本编辑器(底层编辑器默认为vi)
vim进入
:q!退出
命令模式:
d +enter :删除光标所在行以及光标下一行
dd :删除光标所在行
x :删除光标所在字符
Ndd(numb) eg:3dd 表示删除光标行开始一共三行信息
3,5表示删除3-5行的内容
dG :删除光标所在行到文档尾的所有内容
dgg :删除光标所在行到文档首的内容
s :字符替换,替换光标所在字符
yy :复制光标所在行
Nyy :复制光标所在4行
p :粘贴在光标所在下一行
cc :剪切光标所在行
G :跳转到文档尾的行首
gg :跳转到文档首的行首
^ :跳转到行首
$ :跳转到行尾
u 向左撤销
ctrl-r 向右撤销
命令模式进入插入模式的方式
a 插入光标后
A 插入到光标所在行行尾
i 插入到光标前
I 插入到光标所在行行首
o 和回车类似,插入到下一行
O 插入到上一行
s 字符替换(删除光标字符进入插入模式)
S (删除光标所在行进入插入模式)
末行模式
1.由命令模式进入到末行模式方法:”:”
:set nu 显示行号
:set nonu 取消高亮显示
:wq 保存并退出
:q! 强制退出(不保存)
:wq! 强制保存退出
:1,5 co 10 把1到5行的内容复制到第10行下
/root 匹配root关键字
:% s/root/000 关键字符替换,替换的是每一行中的第一次匹配的root关键字
:% s/root/000/g 表示把所有root替换为000
:r 文件名 把指定文件内容读取到当前文件光标的下一行
正则符: . 任意单个字符 (数据类型)
* 匹配前一个字符任意字符
通配符: * 任意长度的任意字符 (文件名)
? 匹配任意单个字符
文本内容处理命令
echo 打印命令(标准输入输出的命令)
#echo hellworld $ 引用变量 $(变量名)可以查看变量值 “” 若引用符(可以解释特殊含义的字符) '' 强引用符(不解释特殊含义的字符) `` 命令替换符 $() 命令替换符
linux 中文件的描述符 0标准输入 1标准输出(正确输出)2错误输出
> 输出重定符(将程序的内容输出重定到指定文件,将内容写入文件,会覆盖源文件内容) >> 输出追加重定向符 < 输入重定向符 << 终止结束符 #head /etc/passwd >file #tail -2 /etc/passwd >> file #cmd 2> file1 把cmd的错误结果输入到file文件 #cmd &> file1 &表示1和2 即把cmd正确或者错误输出写入到file1 ==cmd 1>file1 2>&1
管道符(无名管道)前一个命令的输出结果按照字符流的形式通过管道符连接后一个命令进行处理 必须确保前一个命令有输出结果
tee T形管道
横向输出:将前一个命令的标准输出作为后面文件的标准输入
|tee == > |tee -a == >>
纵向输出:将前一个命令的标准输出直接在终端打印显示
文件的行进行处理(依次进行相同的处理动作直到所有行被处理并且不会对源文件处理只是把处理结果显示到终端)*****
cut 剪切
-c 按照字符剪切 -d 分割字符 -f 分割字段 eg: [root@localhost ~]# cat file.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [root@localhost ~]# cut -d : -f 3 file.txt 0 1
sort 排序
sort 默认按文件行每一行第一个字符开始比较然后再比较第二位
当比较不出来时自动比较后一行(升序排列,从下到大)
-r 降序 从大到小
-n 按照数值比较(从小到大)
-u unique 过滤重复行(重复行仅显示一次)
#sort -nu aaa 将文件中的行按照数值从小到大显示,并且将重复行仅显示一次
wc 文本统计(word count)
wc 文件名 统计指定文件的行,单词数和字节数 -l 统计行数 -w 统计单词数 -m 统计字符数 -c 统计字节 [root@localhost ~]# echo “bbb文件一共有`wc -l bbb |cut -d ' ' -f 1`”行 “bbb文件一共有4”行
uniq 去重
注:重复行必须相临,
eg: # sort aaa |uniq uniq -c 可以统计出现重复行的次数 uniq -d 显示文件重复出现的内容 uniq -D 显示所有重复行
tr 字符替换命令
tr (A) (B) 把(A) 替换为(B) [root@localhost ~]# echo helloworld | tr l 0 he00owor0d 把l字符替换为0字符 [root@localhost ~]# echo helloworld | tr hl 0 0e00owor0d 把h以及l字符替换为0字符 [root@localhost ~]# echo helloworld | tr l 01 he00owor0d 把字符l替换为0字符 -c 反选定 [root@localhost ~]# echo helloworld | tr -c l 0 将除l外所有字符替换为0 -d 删除指定的字符 [root@localhost ~]# echo helloworld | tr -d hl eoword -t 00ll0000l00[root@localhost ~]# echo helloworld | tr -t lh 01 1e00owor0d 把字符h替换为0字符,字符l替换为1 -s 将多个重复出现的字符替换为单个字符 [root@localhost ~]# echo 1 2 3 |tr -s " " " " 1 2 3
grep 文本过滤
格式:grep '(指定关键字)' 文件名 grep 'root' /etc/passwd 有root关键字行打印到终端 grep -o 'root' /etc/passwd 过滤关键字,只把root关键字打印到终端 grep -i 'Root' /etc/passwd 过滤关键字,忽略大小写 grep -v 'root' /etc/passwd 过滤关键字,把没有关键字的行显示 #cat /etc/login.defs grep -v '^#' /etc/login.defs ^#以#开头 grep -v '^$' /etc/login.defs ^$ 过滤空白行
作业:
2.
[root@localhost ~]# cut -d : -f 3 /etc/passwd | sort -nr > UID
[root@localhost ~]# cut -d : -f 4 /etc/passwd | sort -nr > GIU
3.
[root@localhost ~]# date 2022年 11月 28日 星期一 17:20:55 CST [root@localhost ~]# echo date
| cut -d : -f 2 A
4.
[root@localhost ~]# wc -l /etc/passwd
5.
[root@localhost ~]# grep -v '^#' /etc/login.defs
[root@localhost ~]# grep -v '^$' /etc/login.defs