2022.11.26
DAY04
一,文本编辑命令
vim 文本编辑器 vi nano
命令模式:
d + enter 删除光标所在行以及光标下一行
dd 删除光标所在行
x 删除光标所在字符
Ndd 3dd 删除光标行开始一共三行 3,5 表示删除3到5行内容
dG 删除光标所在行到文档尾
dgg 删除光标所在行到文档首
s 字符替换,替换光标所在字符
yy 复制光标所在行 4yy
p 粘贴光标所在下一行
cc 剪切光标所在行
G 跳转到文档尾的行首
gg 跳转到文档首的行首
^ 跳转的行首
$ 跳转到行尾
u 向左撤销
ctrl-r 向右撤销
命令模式进入插入模式的方式:
a 插入光标后
A 插入到光标所在行的行尾
i 插入光标前
I 插入到光标所在行的行首
o 插入的下一行
O 插入到上一行
s 删除光标字符进入插入模式
S 删除光标行进入插入模式
末行模式 (:)
:wq
:q
:q!
:wq!
:15
:set (no)nu (不)显示行数
/root 匹配root关键词
:noh
:1,5 co 10
:% s/root/000/ 关键字符替换,替换的是每一行中第一次匹配到的root关键字
:% s/root/000/g 关键字符替换,替换的是每一行中匹配到的root关键字
:r FILENAME 把指定文件内容读取到当前文件光标的下一行
:w /// 保存
正则符:
. 任意单个字符 (数据内容)
*匹配前一个字符任意次
通配符:
*任意长度的任意字符 (文件名)
?匹配任意单个字符
vim file
(1) 命令模式 (没有任何信息,显示文件名)
(a) | |(esc)
Insert (终端最后一行显示insert)编辑文件内容
(2)
(esc)| |(😃
末行模式(:)
二,文本内容处理命令
echo 打印命令(标准输入输出的命令)
#echo helloworld
[root@B ~]# echo $HOSTNAME
B
[root@B ~]# hostname
B
[root@B ~]# echo "$HOSTNAME"
B
[root@B ~]# echo '$HOSTNAME'
$HOSTNAME
$ 引用变量
“” 弱引用符 (可以解释特殊含义的字符)
‘’ 强引用符 (不可以解释特殊含义的字符)
[root@B ~]# echo $(date)
2022年 11月 26日 星期六 14:51:48 CST
[root@B ~]# echo `date`
2022年 11月 26日 星期六 14:52:30 CST
·· 命令替换符
$() 命令替换符
Linux中文件的描述符 0标准输入 1标准输出(正确输出) 2错误输出
大于号: 输出重定符(将程序的内容输出重定到指定文件–将内容写入文件,会覆盖源文件内容)
大于大于号:输出追加重定向符
小于号:输入重定向符
小于小于号:终止结束符
#head /etc/passwd > file
#tail -2 /etc/passwd >> file
#cmd 2> file 把cmd的错误结果输入到file文件
#cmd &> file1 & 表示1和2 把cmd正确或错误输出写入到file文件 == cmd 1> file1 2> &1
| 管道符(无名管道)前一个命令的输出结果安装字符流的形式通过管道符连接后一个命令进行处理
| tee T型管道 横向输出将前一个命令的标准输出作为后面文件的标准输入 |tee == > |tee -a == >>
纵向输出将前一个命令的标准输出直接在终端打印显示
文件的行进行处理;将处理的结果显示在终端不会对源文件进行修改
cut 剪切
-c 字符
-d 分割字符
-f 分割字段
[root@B ~]# cut -d : -f 3 file.txt
0
1
2
3
4
5
6
7
8
11
[root@B ~]# echo `date|cut -d " " -f 5`
16:19:29
sort 文本内容排序
默认按照文件行的字符进行比较(从小到大)
-r 降序(从大到小)
-n 按照数值比较 (从小到大)
-u uni que 去重
#short -nu aaa 将文件中的行按照数值从小到大显示,并且重复行只显示一次
wc 文本统计
wc FILENAME 统计指定文件的行,单词数,字节数
-l 统计行数
-w 统计单词数
-m 统计字符数
-c 统计字节
uniq 去重,重复行必须相邻
[root@B ~]# sort aaa | uniq
-c 显示重复次数
-d 显示文件重复出现的内容
-D 所有重复行
tr 字符替换命令
tr set1 set2
[root@B ~]# echo helloworld | tr l 0 把l字符替换为0字符
he00owor0d
[root@B ~]# echo helloworld | tr hl 0 把h和l字符替换为 0字符
0e00owor0d
[root@B ~]# echo helloworld | tr l 01 把l字符替换为0字符
he00owor0d
[root@B ~]# echo helloworld | tr -t hl 0 等长字符替换;把h字符替换为0字符
0elloworld
[root@B ~]# echo helloworld | tr -c l 0 反选定;除了l字符之外的字符替换为0字符
[root@B ~]# echo helloworld | tr -d hl 删除字符; 删除hl字符
[root@B ~]# echo 1 2 3 | tr -s " " " "
将多个连续重复字符替换1为单个字符;将多个连续重复的空格字符替换成单个空格字符
grep 文本过滤
grep '关键字' FILENAME
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 | grep -v '^$' ^$ 空白行
作业题:
1.课程笔记总结
2.将/etc/passwd 文件中3,4 字段分别截取出来分别写入文件UID和文件GIU但是这两个文件中的信息是以数值由大到小的形式显示;
3.通过查看时间命令将分别将年月日时分写入A文件
4.告诉用户当前系统有多少用户 (/etc/passwd文件有多少行一行是一个用户信息)。
5.不显示/etc/login.defs 文件中以#开头的行以及空白行。