小白基础学习
1. head
[root@centos7 chunxiao]# cat -n chunxiao.txt 1 total 32 2 -rw-r--r-- 1 root root 720 Jul 31 16:15 bootchart.conf 3 -rw-r--r-- 1 root root 615 Jul 31 16:15 coredump.conf 4 -rw-r--r-- 1 root root 983 Jul 31 16:15 journald.conf 5 -rw-r--r-- 1 root root 957 Jul 31 16:15 logind.conf 6 drwxr-xr-x. 12 root root 4096 Jul 31 16:15 system 7 -rw-r--r-- 1 root root 1551 Mar 12 2019 system.conf 8 drwxr-xr-x. 2 root root 4096 Jul 31 16:15 user 9 -rw-r--r-- 1 root root 1127 Jul 31 16:15 user.conf
cat -n chunxiao.txt | head -n 5
eg.
[root@centos7 chunxiao]# cat -n chunxiao.txt | head -n 5 1 total 32 2 -rw-r--r-- 1 root root 720 Jul 31 16:15 bootchart.conf 3 -rw-r--r-- 1 root root 615 Jul 31 16:15 coredump.conf 4 -rw-r--r-- 1 root root 983 Jul 31 16:15 journald.conf 5 -rw-r--r-- 1 root root 957 Jul 31 16:15 logind.conf
详细说明,这里用到了管道符 | ,管道符的作用就是交接, 就是用cat -n chunxiao.txt查看出来文件的全部内容, 然后用管道符把这个全部的内容传输给了后面的head去处理过滤。其实还有一条命令更加简洁:head -n 5 chunxiao.txt
[root@centos7 chunxiao]# head -n 5 chunxiao.txt total 32 -rw-r--r-- 1 root root 720 Jul 31 16:15 bootchart.conf -rw-r--r-- 1 root root 615 Jul 31 16:15 coredump.conf -rw-r--r-- 1 root root 983 Jul 31 16:15 journald.conf -rw-r--r-- 1 root root 957 Jul 31 16:15 logind.conf
看, 也是把前面5行的内容拿出来了, 只不过没显示行号而已, 要显示行号呢, 可以先用cat 再用head 就像上面用管道符那样。
2.tail
[root@centos7 chunxiao]# cat -n chunxiao.txt 1 total 32 2 -rw-r--r-- 1 root root 720 Jul 31 16:15 bootchart.conf 3 -rw-r--r-- 1 root root 615 Jul 31 16:15 coredump.conf 4 -rw-r--r-- 1 root root 983 Jul 31 16:15 journald.conf 5 -rw-r--r-- 1 root root 957 Jul 31 16:15 logind.conf 6 drwxr-xr-x. 12 root root 4096 Jul 31 16:15 system 7 -rw-r--r-- 1 root root 1551 Mar 12 2019 system.conf 8 drwxr-xr-x. 2 root root 4096 Jul 31 16:15 user 9 -rw-r--r-- 1 root root 1127 Jul 31 16:15 user.conf
那么, 我想就取文件的第8和第9行(换句话说就是取倒数开始的两行)
那么命令就是
cat -n chunxiao.txt | tail -n 2
查询出来的结果就是这样的
[root@centos7 chunxiao]# cat -n chunxiao.txt | tail -n 2 8 drwxr-xr-x. 2 root root 4096 Jul 31 16:15 user 9 -rw-r--r-- 1 root root 1127 Jul 31 16:15 user.conf
呐, 用tail -n 2 chunxiao.txt也是可以达到同样效果的哈
还有一个比较常用的是-f参数, 这个到时候我们再说。
下面就到文本的三剑客了
文本三剑客(grep,sed,awk)
3.grep
[root@centos7 chunxiao]# cat -n chunxiao.txt 1 total 32 2 -rw-r--r-- 1 root root 720 Jul 31 16:15 bootchart.conf 3 -rw-r--r-- 1 root root 615 Jul 31 16:15 coredump.conf 4 -rw-r--r-- 1 root root 983 Jul 31 16:15 journald.conf 5 -rw-r--r-- 1 root root 957 Jul 31 16:15 logind.conf 6 drwxr-xr-x. 12 root root 4096 Jul 31 16:15 system 7 -rw-r--r-- 1 root root 1551 Mar 12 2019 system.conf 8 drwxr-xr-x. 2 root root 4096 Jul 31 16:15 user 9 -rw-r--r-- 1 root root 1127 Jul 31 16:15 user.conf
如果,我只想要显示关于”system”这个字眼的
cat -n chunxiao.txt | grep "system"
[root@centos7 chunxiao]# cat -n chunxiao.txt | grep "system" 6 drwxr-xr-x. 12 root root 4096 Jul 31 16:15 system 7 -rw-r--r-- 1 root root 1551 Mar 12 2019 system.conf
它就会单独给我们列出两行出来
如果, 我想让他不显示关于”system”字眼的
cat -n chunxiao.txt | grep -v "system"
eg.
[root@centos7 chunxiao]# cat -n chunxiao.txt | grep -v "system" 1 total 32 2 -rw-r--r-- 1 root root 720 Jul 31 16:15 bootchart.conf 3 -rw-r--r-- 1 root root 615 Jul 31 16:15 coredump.conf 4 -rw-r--r-- 1 root root 983 Jul 31 16:15 journald.conf 5 -rw-r--r-- 1 root root 957 Jul 31 16:15 logind.conf 8 drwxr-xr-x. 2 root root 4096 Jul 31 16:15 user 9 -rw-r--r-- 1 root root 1127 Jul 31 16:15 user.conf
它就排除了有关”system”字眼的行
4.sed
[root@centos7 chunxiao]# cat -n chunxiao.txt 1 total 32 2 -rw-r--r-- 1 root root 720 Jul 31 16:15 bootchart.conf 3 -rw-r--r-- 1 root root 615 Jul 31 16:15 coredump.conf 4 -rw-r--r-- 1 root root 983 Jul 31 16:15 journald.conf 5 -rw-r--r-- 1 root root 957 Jul 31 16:15 logind.conf 6 drwxr-xr-x. 12 root root 4096 Jul 31 16:15 system 7 -rw-r--r-- 1 root root 1551 Mar 12 2019 system.conf 8 drwxr-xr-x. 2 root root 4096 Jul 31 16:15 user 9 -rw-r--r-- 1 root root 1127 Jul 31 16:15 user.conf
文件的内容已经看了很多遍了,你看第二行最后的那个名字是叫”bootchart.conf”, 现在我要把它变成zhenghua.conf
cat -n chunxiao.txt | sed 's/bootchart.conf/zhenghua.conf/g'
eg.
[root@centos7 chunxiao]# cat -n chunxiao.txt | sed 's/bootchart.conf/zhenghua.conf/g' 1 total 32 2 -rw-r--r-- 1 root root 720 Jul 31 16:15 zhenghua.conf 3 -rw-r--r-- 1 root root 615 Jul 31 16:15 coredump.conf 4 -rw-r--r-- 1 root root 983 Jul 31 16:15 journald.conf 5 -rw-r--r-- 1 root root 957 Jul 31 16:15 logind.conf 6 drwxr-xr-x. 12 root root 4096 Jul 31 16:15 system 7 -rw-r--r-- 1 root root 1551 Mar 12 2019 system.conf 8 drwxr-xr-x. 2 root root 4096 Jul 31 16:15 user 9 -rw-r--r-- 1 root root 1127 Jul 31 16:15 user.conf
你看, 是不是变化了
再来一个增强记忆, 你看第4和第5列, 是不是都是显示”root”, 那么我们把它显示为xiaobai
cat -n chunxiao.txt | sed 's/root/xiaobai/g'
eg.
[root@centos7 chunxiao]# cat -n chunxiao.txt | sed 's/root/xiaobai/g' 1 total 32 2 -rw-r--r-- 1 xiaobai xiaobai 720 Jul 31 16:15 bootchart.conf 3 -rw-r--r-- 1 xiaobai xiaobai 615 Jul 31 16:15 coredump.conf 4 -rw-r--r-- 1 xiaobai xiaobai 983 Jul 31 16:15 journald.conf 5 -rw-r--r-- 1 xiaobai xiaobai 957 Jul 31 16:15 logind.conf 6 drwxr-xr-x. 12 xiaobai xiaobai 4096 Jul 31 16:15 system 7 -rw-r--r-- 1 xiaobai xiaobai 1551 Mar 12 2019 system.conf 8 drwxr-xr-x. 2 xiaobai xiaobai 4096 Jul 31 16:15 user 9 -rw-r--r-- 1 xiaobai xiaobai 1127 Jul 31 16:15 user.conf
已经发生了变化
5.awk
请看, 现在里面有9列, 是吧
那么我只想把第8列显示出来
cat chunxiao.txt | awk '{print$8}'
eg.
[root@centos7 chunxiao]# cat chunxiao.txt | awk '{print$8}' 16:15 16:15 16:15 16:15 16:15 2019 16:15 16:15
呐, 是这个样子的
如果我想看第9列呢
[root@centos7 chunxiao]# cat chunxiao.txt | awk '{print$9}' bootchart.conf coredump.conf journald.conf logind.conf system system.conf user user.conf
如果我只想看最后一列呢
[root@centos7 chunxiao]# cat chunxiao.txt | awk '{print$NF}' 32 bootchart.conf coredump.conf journald.conf logind.conf system system.conf user user.conf
如果我想把第8和第9列都显示呢
[root@centos7 chunxiao]# cat chunxiao.txt | awk '{print$8,$9}' 16:15 bootchart.conf 16:15 coredump.conf 16:15 journald.conf 16:15 logind.conf 16:15 system 2019 system.conf 16:15 user 16:15 user.conf