选取命令就是将一段数据经过分析后,取出我们所想要的。或者是经由分析关键词,取得我们所想要的那一行!一般来说,选取命令通常是针对一行一行的数据来进行分析的, 并不是整篇信息分析。
cut
  cut命令可以将一段信息的某一段选取出来,信息处理一行为单位。CUT命令使用格式如下:

[root@www ~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符
[root@www ~]# cut -c 字符区间 <==用于排列整齐的信息
选项与参数:
-d :后面接分隔字符。与 -f 一起使用;
-f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
-c :以字符 (characters) 的单位取出固定字符区间;

  范例一:将 PATH 变量取出,我要找出第五个路径。

[root@www ~]# echo $PATH | cut -d ':' -f 5
# 如同上面的数字显示,我们是以『 : 』作为分隔,因此会出现 /usr/local/bin
# 那么如果想要列出第 3 与第 5 呢?,就是这样:
[root@www ~]# echo $PATH | cut -d ':' -f 3,5

  范例二:将 export 输出的信息,取得第 12 字符以后的所有字符串

[root@www ~]# export
declare -x HISTSIZE="1000"
declare -x INPUTRC="/etc/inputrc"
declare -x KDEDIR="/usr"
declare -x LANG="zh_TW.big5"
.....(其他省略).....
# 注意看,每个数据都是排列整齐的输出!如果我们不想要『 declare -x 』时,
# 就得这么做: [root@www ~]# export | cut -c 12-
HISTSIZE="1000"
INPUTRC="/etc/inputrc"
KDEDIR="/usr"
LANG="zh_TW.big5"

  CUT -d命令适合操作具有固定分割符的文本,用 -c 可以处理比较具有格式的输出数据,还可以指定某个范围的值,例如第 12-20 的字符,就是 cut -c 12-20。cut 主要的用途在于将『同一行里面的数据进行分解!』最常使用在分析一些数据或文字数据的时候! 这是因为有时候我们会以某些字符当作分割的参数,然后来将数据加以切割,以取得我们所需要的数据。 鸟哥也很常使用这个功能呢!尤其是在分析 log 文件的时候!不过,cut 在处理多空格相连的数据时,可能会比较吃力一点。

grep

   cut是将一行信息当中,取出某部分我们想要的,而grep则是分析一行信息, 若当中有我们所需要的信息,就将该行拿出来。其使用方法如下:

[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!

  具体的操作实例如下:

范例一:将 last 当中,有出现 root 的那一行就取出来;
[root@www ~]# last | grep 'root' 范例二:与范例一相反,只要没有 root 的就取出!
[root@www ~]# last | grep -v 'root' 范例三:在 last 的输出信息中,只要有 root 就取出,并且仅取第一栏
[root@www ~]# last | grep 'root' |cut -d ' ' -f1
# 在取出 root 之后,利用上个命令 cut 的处理,就能够仅取得第一栏啰! 范例四:取出 /etc/man.config 内含 MANPATH 的那几行
[root@www ~]# grep --color=auto 'MANPATH' /etc/man.config
....(前面省略)....
MANPATH_MAP /usr/X11R6/bin /usr/X11R6/man
MANPATH_MAP /usr/bin/X11 /usr/X11R6/man
MANPATH_MAP /usr/bin/mh /usr/share/man

排序命令: sort, wc, uniq

  sort命令可以进行排序,而且可以依据不同的数据型态来排序,排序的字符与语系的编码有关。

[root@www ~]# sort [-fbMnrtuk] [file or stdin]
选项与参数:
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,默认是用 [tab] 键来分隔;
-k :以那个区间 (field) 来进行排序的意思

  范例一:个人账号都记录在 /etc/passwd 下,请将账号进行排序。

[root@www ~]# cat /etc/passwd | sort
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

  范例二:/etc/passwd 内容是以 : 来分隔的,我想以第三栏来排序,该如何?

[root@www ~]# cat /etc/passwd | sort -t ':' -k 3
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin

  看到特殊字体的输出部分了吧?怎么会这样排列啊?如果是以文字型态来排序的话,原本就会是这样,想要使用数字排序,使用-n来以数字来排序。

# cat /etc/passwd | sort -t ':' -k 3 -n

uniq
  uniq命令可以用来去除重复的数据,仅仅保留一行,其使用方法如下:

[root@www ~]# uniq [-ic]
选项与参数:
-i :忽略大小写字符的不同;
-c :进行计数

  范例一:使用 last 将账号列出,仅取出账号栏,进行排序后仅取出一位;

[root@www ~]# last | cut -d ' ' -f1 | sort | uniq

  范例二:承上题,如果我还想要知道每个人的登陆总次数呢?

[root@www ~]# last | cut -d ' ' -f1 | sort | uniq -c
1
12 reboot
41 root
1 wtmp

  UNIQ这个命令用来将重复的行删除掉只显示一个,举个例子来说, 你要知道这个月份登陆你主机的用户有谁,而不在乎他的登陆次数,那么就使用上面的范例, (1)先将所有的数据列出;(2)再将人名独立出来;(3)经过排序;(4)只显示一个! 由于这个命令是在将重复的东西减少,所以当然需要『配合排序过的文件』来处理啰!
wc
  如果想要知道文件里面有多少字?多少行?多少字符的话可以利用 wc 这个命令来达成,WC可以帮我们计算输出的信息的整体数据。其使用方法如下:

[root@www ~]# wc [-lwm]
选项与参数:
-l :仅列出行;
-w :仅列出多少字(英文单字);
-m :多少字符;

  范例一:那个 /etc/man.config 里面到底有多少相关字、行、字符数?

[root@www ~]# cat /etc/man.config | wc
141 722 4617

  输出的三个数字中,分别代表: 行、字数、字符数

每天学点Linux-选取命令CUT和GREP的更多相关文章

  1. Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs

    在每个管线后面接的第一个数据必定是『命令』喔!而且这个命令必须要能够接受 standard input 的数据才行,这样的命令才可以是为『管线命令』,例如 less, more, head, tail ...

  2. Linux常用命令4(grep、df、du、awk、su、ll)

    [grep命令] grep常用用法 [root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename选项与参数:-a :将 binary 文件以 ...

  3. linux每日命令(35):grep命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  4. Linux Shell 命令--cut

    解读-help 用法:cut [选项]... [文件]... 从每个文件中输出指定部分到标准输出. 长选项必须使用的参数对于短选项时也是必需使用的.   -b, --bytes=列表          ...

  5. linux常用命令 cut字符截取命令

    cut 字符截取 cut [选项] 文件名 选项 -f 列号: 提取第几列 -d 分割符:按照指定的分隔符分割列 默认使用制表符("tab")进行分割 ssgao:Download ...

  6. Linux基础命令---cut

    cut 将文件中每一行的指定内容显示到标准输出. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法         cut [ ...

  7. 『学了就忘』Linux基础命令 — 31、grep命令和通配符

    目录 1.grep命令介绍 2.find命令和grep命令的区别(重点) (1)find命令 (2)grep命令 3.通配符与正则表达式的区别 (1)通配符: (2)正则表达式: 1.grep命令介绍 ...

  8. Linux基础命令---显示文本grep

    grep 按照指定的模式,在文件中搜索匹配的行,将结果显示在标准输出.另外还有两个指令egrep相当于grep –E,fgrep相当于grep -F.如果没有给出文件名,那么从标准输入读取. 此命令的 ...

  9. Linux高级命令 ==> find、grep、sed、awk

    一.find find命令用来在指定目录下查找文件.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将查找到的子目录和文件全部进行显示. 语法 find path ...

随机推荐

  1. SSH(Spring SpringMVC Hibernate)框架整合

    项目说明: 使用SSH(Spring SpringMVC Hibernate)框架整合添加部门功能 项目结构   1.导入依赖jar包 <!--单测--> <dependency&g ...

  2. [POI2012]Tour de Bajtocja

    [POI2012]Tour de Bajtocja 题目大意: 给定一个\(n(n\le10^6)\)个点\(m(m\le2\times10^6)\)条边的无向图,问最少删掉多少条边能使得编号小于等于 ...

  3. 3ds max学习笔记(九)-- 实例操作(路径阵列)

    栅栏 路径阵列也叫间隔工具,将选择的物体沿指定的路径进行复制.实现物体在路径上的饿均匀分布. 选择需要分布的物体对象,在视图中绘制二维图形做为路径线条. 1.选择线条,制作路径 2.选择需要分布的物体 ...

  4. Idea-每次修改JS文件都需要重启Idea才能生效解决方法

    最近开始使用Idea,有些地方的确比eclipse方便.但是我发现工程每次修改JS或者是JSP页面后,并没有生效,每次修改都需要重启一次Tomcat这样的确不方便.我想Idea肯定有设置的方法,不可能 ...

  5. bootstrap常见的面试题

    1.  如果让一个元素在pc端显示而在手机端隐藏,下列选项正确的是(b). A. visible-xs-8  hidden-md B. visible-md-8 hidden-xs C. visibl ...

  6. .NET语言的编译过程:中间语言(IL)和即时编译器(JIT)

    .NET语言的编译分为两个阶段.首先高级语言被编译成一种称作IL的中间语言,与高级语言相比,IL更像是机器语言,然而,IL却包含一些抽象概念(比如:类.异常),这也是这种语言被称为中间语言的原因.IL ...

  7. SOLDI原则之DIP:依赖倒置原则

    本篇介绍软件设计原则之一DIP:依赖倒置原则.很多知识回头来看会有新的理解.看到一句话,一段文字,一个观点有了新的理解,醍醐灌顶的感觉.这种感觉像是一种惊喜.古语说:温故而知新. DIP:依赖倒置原则 ...

  8. 吐槽下mac的打印机设置

    只有第一次使用的时候,会提示密码和用户名验证,但是如果中途修改了密码, 找了半天都找不到,给人一种挫败感. 最后是在:点击作业队列某一作业右边的刷新按钮,才会弹出验证的对话框, 可能,mac当初设计这 ...

  9. jvm理论-class文件

    当JVM运行Java程序的时候,它会加载对应的class文件,并提取class文件中的信息存放在JVM的方法区内存中. Class文件组成 1.Class文件是一组以8位字节为基础单位的二进制流,各个 ...

  10. web调用本地exe应用程序并传入参数

    从网页中通过自定义URL Protocol调用本地程序,需要将协议写到注册表中.浏览器在解析到自定义URL Protocol之后,寻找注册表,通过注册表启动相应的程序并传入参数.协议里面需要记录本地程 ...