文章目录
- 一、常用shell命令
- 任务一:查看`/etc`目录信息前5行信息
- 任务二:查看`/etc/profile`文件后5行信息
- 二、grep命令
- 选项参数
- 任务一:抓取`/etc`目录下的python信息
- 任务二:抓取`/etc/profile`文件里的dev信息
- 任务三:抓取用户数据文件中以us打头的信息
- 任务四:显示所有以win开头的文件中包含hello的行
- 三、find命令
- 选项参数
- 任务一:按类型查找
- 任务二:按大小查找
- 任务三:按权限查找
- sed命令
- 参数说明
- 替换操作(s - substitute)
- 任务一:将所有行的第一个hello替换成HELLO
- 任务二:将第2行到第3行的第2个hello替换成HELLO
- 任务三:将第2行的hello全部替换成HELLO
- 任务四:将全部的hello替换成HELLO后生成新文件
- 任务五:将全部的hello替换成hi,要求修改原文件
- 插入操作(i - insert, a - append)
- 任务一:在第2行之前插入一行新内容
- 任务二:在第2行之后插入一行新内容
- 删除操作(d - delete)
- 任务一:删除第2行
- 任务二:删除第2行到第3行
- 任务三:删除文件所有行
- 任务四:删除包含指定字符串的行
一、常用shell命令
任务一:查看/etc
目录信息前5行信息
- 命令:
ll /etc | head -5
任务二:查看/etc/profile
文件后5行信息
- 命令:
cat /etc/profile | tail -5
二、grep命令
选项参数
参数 | 作用 |
---|---|
-c | 只输出匹配行的计数 |
-l | 不区分大 小写(只适用于单字符) |
-h | 查询多文件时不显示文件名 |
-n | 显示匹配行及行号 |
-s | 不显示不存在或无匹配文本的错误信息 |
-v | 显示不包含匹配文本的所有行 |
\ | 忽略正则表达式中特殊字符的原有含义 |
[ ] | 单个字符,如[A]即A符合要求 |
[-] | 范围,如[A-Z],即A、B、C一直到Z都符合要求 |
. | 所有的单个字符 |
* | 任意字符,长度可以为0 |
任务一:抓取/etc
目录下的python信息
- 命令:
ll /etc | grep python
- 命令:
ll /etc | grep -c python
任务二:抓取/etc/profile
文件里的dev信息
- 命令:
cat /etc/profile | grep dev
任务三:抓取用户数据文件中以us打头的信息
- 命令:
cat /etc/passwd | grep us*
任务四:显示所有以win开头的文件中包含hello的行
- 命令:
grep hello win*
三、find命令
选项参数
参数 | 作用 |
---|---|
-type | 按类型查找(d - 目录;l - 链接;f - 文件) |
-name | 按名称查找(可使用通配符) |
-size | 按大小查找 |
-perm | 按权限查找 |
任务一:按类型查找
- 命令:
find /etc/sysconfig -type 'd'
- 检查是否查找成功
- 命令:
find /etc/sysconfig -type 'l'
- 命令:
find /etc/sysconfig -type 'f'
任务二:按大小查找
- 命令:
find /etc/sysconfig -size 15c
(等于15字节)
- 命令:
find /etc/sysconfig -size +10k
(大于10240个字节)
- 命令:
find /etc/sysconfig -size -20c
(小于20个字节)
任务三:按权限查找
- 命令:
find /etc/sysconfig -perm '777'
(权限字符串:rwxrwxrwx)
- 命令:
find /etc/sysconfig -perm '755'
(权限字符串:rwxr-xr-x)
sed命令
参数说明
参数 | 作用 |
---|---|
a | 新增, a 的后面可以接字串,这些字串会在新的一行出现(当前行的下一行) |
c | 取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行 |
d | 删除,因为是删除啊,所以 d 后面通常不接任何东西 |
i | 插入, i 的后面可以接字串,这些字串会在新的一行出现(当前行的上一行) |
p | 打印,将某个选择的数据打印出,通常 p 会与参数 sed -n 一起运行 |
s | 取代,可以直接进行取代工作,通常这个 s 的动作可以搭配正规表示法 |
替换操作(s - substitute)
任务一:将所有行的第一个hello替换成HELLO
- 预备工作:创建demo.txt
- 命令:
sed "s/hello/HELLO/" demo.txt
任务二:将第2行到第3行的第2个hello替换成HELLO
- 命令:
sed "2,3s/hello/HELLO/2" demo.txt
任务三:将第2行的hello全部替换成HELLO
- 命令:
sed "2s/hello/HELLO/g" demo.txt
任务四:将全部的hello替换成HELLO后生成新文件
- 命令:
sed "s/hello/HELLO/g" demo.txt > demo1.txt
任务五:将全部的hello替换成hi,要求修改原文件
- 执行命令:
sed -i "s/hello/hi/g" demo.txt
插入操作(i - insert, a - append)
任务一:在第2行之前插入一行新内容
- 命令:
sed "2 i I love Linux" demo.txt
任务二:在第2行之后插入一行新内容
- 命令:
sed "2 a Linux is fun and I love it" demo.txt
删除操作(d - delete)
任务一:删除第2行
- 命令:
sed '2d' demo.txt
任务二:删除第2行到第3行
- 命令:
sed '2,3d' demo.txt
任务三:删除文件所有行
- 命令:
sed 'd' demo.txt
任务四:删除包含指定字符串的行
- 命令:
sed '/scala/g' demo.txt
- 思考题:删除匹配行时,只是删除内容,行还依然存在,如何能将行也删除掉?
- 将动作参数最后的/g改为/d即可
- 命令:
sed '/scala/d' demo.txt