请用shell脚本写出当前文件夹(/home)下所有的文本文件内容中包含有字符“shen”的文件名称
grep -r "shen" /home | cut -d ":" -f 1
1.cut
cut的工作是“剪”,具体的说的就是在文件中负责剪切数据用的。cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符、字段输出。
1.1基本用法
cut [选项参数] filename
1.2常用选项参数
选项参数 | 功能 |
---|---|
-f | 列号,提取第几列 |
-d | 分隔符,按照指定分隔符分隔列 |
-c | 指定具体的字符 |
1.3 案例实操
(0)以:为间隔,切割PATH环境变量的第一列
[root@0725pc ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/jdk1.8.0_121/bin:/root/bin
[root@0725pc ~]# echo $PATH | cut -d ':' -f 1
/usr/lib64/qt-3.3/bin
(2)以:为间隔,切割PATH环境变量的第二、三列
[root@0725pc ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/jdk1.8.0_121/bin:/root/bin
[root@0725pc ~]# echo $PATH | cut -d ':' -f 2,3
/usr/local/sbin:/usr/local/bin
(3)选取系统PATH变量值,第2个“:”开始后的所有路径:
[root@0725pc ~]$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/atguigu/bin
[root@0725pc ~]$ echo $PATH | cut -d: -f 3-
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/atguigu/bin
(4)以:为间隔,切割PATH环境变量的第一到三列,和第五列
[root@0725pc ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/jdk1.8.0_121/bin:/root/bin
[root@0725pc ~]# echo $PATH | cut -d ':' -f 1-3,5
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/bin
(5)切割ifconfig 后打印的IP地址
[root@0725pc ~]$ ifconfig eth0 | grep "inet addr" | cut -d: -f 2 | cut -d" " -f1
192.168.1.102
2.sed
sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间",接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容打印到屏幕。接着处理下一行,这样不断重复,直到文件末尾。不使用重定向输出的情况下,文件内容是不会改变的
2.1基本用法
sed [选项参数] filename
2.2常用选项参数
选项参数 | 功能 |
---|---|
-e | 直接在指令模式上进行sed |
-i | 在文件上修改,修改原文件 |
a | 新增,a的后面可以接字串,在下一行出现 |
d | 删除 |
s | 查找并替换 |