RUI个人博客 首页>>Linux>>[原] Linux学习笔记之 Linux 认识bash shell tee 管道 cut grep sort wc uniq

[原] Linux学习笔记之 Linux 认识bash shell tee 管道 cut grep sort wc uniq

目录:

12. 数据重导向 redirect:将目前的所得数据输出到其他地方去
    12.1 双向重导向  tee 将数据流同时输出到屏幕和文件 
    12.2 为何要使用命令输出重导向
13. 命令执行的判断依据  ;    &&   ||
14. 管道命令pipe   只能处理通过前面一个命令传来的正确信息
    14.1 cut 将一段消息的某段“切”出来。消息以行为单位   cut -d   cut -c
    14.2 grep 分析一行信息,若其中有需要的信息,就将这一行信息显示出来
15 .排序命令  sort   wc uniq
    15.1 sort 排序
    15.2 uniq 去除唯一值

12. 数据重导向 redirect:将目前的所得数据输出到其他地方去

    · 重导向 redirect: 就是将目前的所得数据输出到其他地方去

    · 三种输出输入的状况,分别是:

标准输入 stdin 代码为0;使用 < 或 <<
标准输出 stdout 代码为1;使用的方式为 1> 或 >>
错误输出 stderr 代码为2; 使用的方式为 2> 或 2>>
    · find / -name file 1>list_rigtht 2>list_error 

    · find / -name file 1>list 2>&1

    · find / -name file >list 2>list

oracle@RAC1[RACDB1]/home/oracle$touch 1.txt
oracle@RAC1[RACDB1]/home/oracle$find /home -name 1.txt
oracle@RAC1[RACDB1]/home/oracle$find /home -name 1.txt >right 2>error
oracle@RAC1[RACDB1]/home/oracle$cat -n right
oracle@RAC1[RACDB1]/home/oracle$cat -n error 

   12.1 双向重导向  tee 将数据流同时输出到屏幕和文件

[root@RAC1 tmp]# ls |tee ls          // 将ls 命令出来的内容添加到文件ls中
[root@RAC1 tmp]# cat ls
[root@RAC1 tmp]# ls /home |tee -a ls       // 将ls /home命令出来的内容追加到ls文件后面
[root@RAC1 tmp]# cat ls

   12.2 为何要使用命令输出重导向

[root@RAC1 tmp]# sar 1 100 | tee -a sar1.txt      //将命令sar显示的保存到文件sar1.txt中
[root@RAC1 tmp]# cat sar1.txt 

13. 命令执行的判断依据  ;    &&   ||

[root@RAC1 tmp]# lsa;ls -l       // ; 无论las执行结果为何   ls -l都会被执行
[root@RAC1 tmp]# lsa && ls -l      //lsa 正确执行才能执行ls -l
[root@RAC1 tmp]# lsa || ls -l        // 如果lsa 错误才执行ls -l
[root@RAC1 tmp]# ls 1.txt && echo "1.txt file is exist" || echo "1.txt file is not exist"
[root@RAC1 tmp]# ls 2.txt && echo "2.txt file is exist" || echo "2.txt file is not exist"

14. 管道命令pipe   只能处理通过前面一个命令传来的正确信息

   14.1 cut 将一段消息的某段“切”出来。消息以行为单位   cut -d   cut -c

[root@RAC1 ~]# echo $PATH
[root@RAC1 ~]# echo $PATH |cut -d ':' -f4               // 把echo $PATH输出的以 : 截断 取第4段
[root@RAC1 ~]# echo $PATH |cut -d ':' -f4,6           // 把echo $PATH输出的以 : 截断 取第4段 和 第6段
[root@RAC1 ~]# echo $PATH |cut -d ':' -f 4-6         // 把echo $PATH输出的以 : 截断 取第4段 到 第6段
[root@RAC1 ~]# export
[root@RAC1 ~]# export |cut -c 12-       // 将export输出的12个字符之前的都截掉
[root@RAC1 ~]# export |cut -c 12-20       //export输出的第12到20个字符 都截出来

   14.2 grep 分析一行信息,若其中有需要的信息,就将这一行信息显示出来

    · grep 分析一行信息,若其中有需要的信息,就将这一行信息显示出来

    · grep [-acinv] '搜索字符串' filename

-a 将二进制文件以文本文件的方式搜索数据
-c 计算找到‘搜索字符串’的次数
-i 忽略大小写的不同,所有大小写视为相同
-n 顺便输出行号
-v 反向选择,即显示没有"搜索字符串" 的那一行

[root@RAC1 ~]# cat /etc/passwd | grep 'oracle'       // passwd文件中包含oracle一行显示出来
[root@RAC1 ~]# grep 'oracle' /etc/passwd
[root@RAC1 ~]# grep -n -v 'oracle' /etc/passwd      // passwd文件中除去包含oracle 其他行都显示出来
[root@RAC1 ~]# last | grep -c 'root'       // 计算last命令的输出中 出现root 的次数

15 .排序命令  sort   wc uniq

    · 排序命令:sort  wc  uniq

   15.1 sort 排序

sort [-fbMnrtuk] [file or stdin] 参数说明:
-f 忽略大小写的差异
-b 忽略最前面的空格字符部分
-M 以月份的名字来排序
-n 使用 纯数字 排序(默认使用文字类型来排序)
-r 反向排序
-t 分隔符,默认是 tab
-u 就是 uniq,相同数据,只列出一次显示
-k 按那个字段(field)来进行排序

[root@RAC1 tmp]# tail /etc/passwd >passwd      // tail默认为10行
[root@RAC1 tmp]# cat passwd

[root@RAC1 tmp]# cat passwd |sort        //以passwd文件中首字母排序
[root@RAC1 tmp]# sort -t ':' -k 3 passwd     // passwd文件中以 : 分隔符  第3个字段排序
[root@RAC1 tmp]# sort -t ':' -k 3 -n passwd      // passwd文件中以 : 分隔符  第3个字段排序  按数字大小排序
[root@RAC1 tmp]# sort -t ':' -k 3 -nr passwd      //passwd文件中以 : 分隔符  第3个字段排序  按数字大小反向排序
[root@RAC1 tmp]# last
[root@RAC1 tmp]# last |cut -d ":" -f1 |sort           // last命令输出中 以 :  分隔符 去除第一段 进行排序
[root@RAC1 tmp]# last |cut -d " " -f1 |sort        // last命令输出中 以 (空格) 分隔符 去除第一段 进行排序
[root@RAC1 tmp]# last |cut -d " " -f1 |sort -u       // last命令输出中 以 (空格) 分隔符 去除第一段 进行排序  相同数据直列一行

   15.2 uniq 去除唯一值

uniq [-ic]
-i 忽略大小写
-c 进行计数
wc [-lwm]
-l 仅显示多少行
-w 仅显示有多少字
-m 多少字符

[root@RAC1 tmp]# last | cut -d " " -f1 |sort |uniq      // last命令输出中 以 (空格) 分隔符 去除第一段 进行排序  相同数据直列一行
[root@RAC1 tmp]# last | cut -d " " -f1 |sort |uniq -c     // last命令输出中 以 (空格) 分隔符 去除第一段 进行排序  相同数据直列一行并计数
[root@RAC1 tmp]# cat -n testwc.txt 
[root@RAC1 tmp]# ls -l testwc.txt 
[root@RAC1 tmp]# cat -A testwc.txt 
[root@RAC1 tmp]# wc -l testwc.txt 
[root@RAC1 tmp]# wc -w testwc.txt
[root@RAC1 tmp]# wc -m testwc.txt
[root@RAC1 tmp]# cat -n testwc1.txt 
[root@RAC1 tmp]# wc testwc1.txt
[root@RAC1 tmp]# echo $LANG


    2016.05.10 于 北京邮储传    tyger.wang

昵  称:
邮  箱:
评论内容:
验 证 码:
可用[code][/code]插入代码
点击刷新验证码