Linux cut命令

切割,轻巧的取列命令 -d钦命分隔符 -f数字取第几列。-f 三, 6

      -c按字符取。

Linux cut命令用于显示每行从伊始算起 num1 到 num2 的文字。

一、作用

cut命令是2个抉择命令,其功用是将文件中的每1行”字节” ”字符” ”字段”
进行私分,接纳大家供给的,并将那个选拔好的多寡输出至正式输出

cut 
 功用:按列提取文件
 参数: -d 指明列分隔符 -f 选用输出的区域 -c 内定字符地方
  -b
:以字节为单位开始展览剪切。那些字节地点将忽略多字节字符边界,除非也内定了
-n 标记。
  -c :以字符为单位开始展览分割。
  -d :自定义分隔符,默感觉制表符。
  -f :与-d一齐利用,钦点显示哪个区域。
  -n :打消分割多字节字符。仅和 -b
标识联手使用。要是字符的最后二个字节落在由 -b 标识的 List
参数提示的<br />范围以内,该字符将被写出;不然,该字符将被清除
 语法: cut -b 8,3-5
  三-5,捌:cut命令假使接纳了-b选项,那么实施此命令时,cut会先把-b前边全部的一定进行从小到大排序,然后再领取。可不能颠倒定位的依次哦 
  cut -b -3
  -三代表从第五个字节到第八个字节
  cut -b 3-
  3-表示从第陆个字节到行尾
  cut -b -3,3-
  输出整行,不会油但是生一而再七个重叠的
  cut -c 
  -c则会以字符为单位,输出平常;而-b只会傻傻的以字节(5位2进制位)来计量,输出就是乱码.
当碰到多字节字符时,能够应用-n选项,

大旨文本处理-cut

语法

cut  [-bn] [file]
cut [-c] [file]
cut [-df] [file]

选用验证:

cut
命令从文件的每一行剪切字节、字符和字段并将这几个字节、字符和字段写至正式输出。

要是不点名 File 参数,cut 命令将读取标准输入。必须钦赐 -b、-c 或 -f
标识之壹。

参数:

  • -b
    :以字节为单位开展分割。这一个字节地方将忽略多字节字符边界,除非也钦命了
    -n 标识。
  • -c :以字符为单位开始展览剪切。
  • -d :自定义分隔符,默以为制表符。
  • -f :与-d一同行使,钦赐显示哪个区域。
  • -n :撤废分割多字节字符。仅和 -b
    标识联袂利用。要是字符的最后一个字节落在由 -b 标识的 List
    参数提醒的
    限制以内,该字符将被写出;不然,该字符将被破除

二、格式

cut -[n]b file 
cut -c file 
cut -d[分隔符] -f[域] file

cut -d : -f 1,3-5

澳门金沙国际 , 

实例

澳门金沙国际 1澳门金沙国际 2

当你执行who命令时,会输出类似如下的内容:

$ who
rocrocket :0           2009-01-08 11:07
rocrocket pts/0        2009-01-08 11:23 (:0.0)
rocrocket pts/1        2009-01-08 14:15 (:0.0)
如果我们想提取每一行的第3个字节,就这样:

$ who|cut -b 3
c
c

View Code

 

三、参数解释

-b(bytes)
:以字节为单位展开剪切。这一个字节地点将忽略多字节字符边界,除非也钦定了
-n 标识。 
-c(characters) :以字符为单位开始展览剪切。 
-d :自定义分隔符,默感到制表符。 
-f(filed) :与-d一同使用,钦点呈现哪个区域。 
-n :裁撤分割多字节字符。仅和 -b
标记一块行使。固然字符的终极二个字节落在由 -b 标志的 List 参数提醒的
范围以内,该字符将被写出;不然,该字符将被拔除。

  提取依据:分割的率先列,第三列到第肆列
  sed -n l file
  空格到底是由若干个空格组成的要么由叁个制表符组成,-n 后L的小写字母

近年来大家上课的find、grep、sort、uniq命令都以行文本处理工科具,可是不少时候大家又想知道那些行中某①列文本的始末恐怕唯有部分列的内容对大家是行之有效的,那样的状态又该怎么处理吧,怎样知道特定的列的始末吧?cut命令就该登台了。

四、实例分析

新建多个test壹.txt,如下

557adfhg
bcd5464b
135465453456
233546576
[root@localhost shell]# 
  • 1
  • 2
  • 3
  • 4
  • 5

  • 1
  • 2
  • 3
  • 4
  • 5

新建2个test二.txt,如下

[root@localhost shell]# cat test2.txt 
星期一
星期二
星期三
星期四
星期五
星期六
星期日
[root@localhost shell]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

 

  www.2cto.com  

1) -b

1、cut命令

一.区划单个字节

正如,只剪切txt中的每壹行的首先个字节

[root@localhost shell]# cut -b 1 test1.txt 
5
b
1
2
[root@localhost shell]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

cut
命令从文件的每一行剪切字节、字符和字段并将这几个字节、字符和字段写至正式输出。假使不点名
File 参数,cut 命令将读取标准输入。

二.私分五个字节

分割多少个字符有多数方式, 
如 -b 一,三,5 //剪切每一行第 1 三 四个字符 (示例1) 
如 -b 一-伍 //剪切每一行第 1-5 个字符 (示例贰) 
如 -b -伍 //剪切每1行第 一-5 个字符 (示例3) 
如 -b 3- //剪切每一行第 二个字符以往的 (示例四)

示例1:

[root@localhost shell]# cut -b 1,3,5 test1.txt 
57d
bd4
156
234
[root@localhost shell]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

  • 1
  • 2
  • 主干文本处理,命令详解。3
  • 4
  • 5
  • 6

示例2:

[root@localhost shell]# cut -b 1-5 test1.txt 
557ad
bcd54
13546
23354
[root@localhost shell]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

示例3:

[root@localhost shell]# cut -b -5 test1.txt 
557ad
bcd54
13546
23354
[root@localhost shell]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

示例4:

[root@localhost shell]# cut -b 3- test1.txt 
7adfhg
d5464b
5465453456
3546576
[root@localhost shell]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

 

三.剪切字符

率先遵照下边包车型地铁事例对test贰.txt拓展操作,看有何意况

[root@localhost shell]# cut -b 2 test2.txt 
�
�
�
�
�
�
�
[root@localhost shell]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

出现了乱码的现象,因为-b
只是本着字节进行裁剪,对二当中夏族民共和国字进行字节裁剪,获得的结果自然是乱码,若想行使
-b 命令对字节进行裁剪,那么则须求运用 -n
选项,此选项的意义是吊销分割多字节字符。

[root@localhost shell]# cut -nb 3 test2.txt 

星
星
星
星
星
星
[root@localhost shell]# cut -nb 3,6  test2.txt 
星
星期
星期
星期
星期
星期
星期
[root@localhost shell]# cut -nb 3,6,9  test2.txt 
星期
星期二
星期三
星期四
星期五
星期六
星期日
[root@localhost shell]# cut -nb 3,6,9,12  test2.txt 
星期一
星期二
星期三
星期四
星期五
星期六
星期日
[root@localhost shell]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

cut命令格式:

2) -c

-c的遵循正是分开字符,和方面包车型地铁 -nb 某个类似

[root@localhost shell]# cut -c 1 test2.txt 

星
星
星
星
星
星
[root@localhost shell]# cut -c 2 test2.txt 
星
期
期
期
期
期
期
[root@localhost shell]# cut -c 1-3 test2.txt 
星期
星期二
星期三
星期四
星期五
星期六
星期日
[root@localhost shell]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

 

3)-f

地点的-b -c
只是对准于格式固定的数额中剪切,但是对于部分格式不牢固的,就从未有过章程获得到大家想要的数量,由此便有了
-f 域的概念。

示例1:

[root@localhost shell]# cat /etc/passwd | head -n 3
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@localhost shell]# 
  • 1
  • 2
  • 3
  • 4
  • 5

  • 1
  • 2
  • 3
  • 4
  • 5

譬如将地点的首先个 : 前边的字符给剪切出来,那么大家就足以选拔 -d
命令,钦命其分割符为 : 然后再接纳第三个域内的始末就可以,如下

[root@localhost shell]# cat /etc/passwd | head -n 3 | cut -d : -f 1
root
bin
daemon
[root@localhost shell]# 
  • 1
  • 2
  • 3
  • 4
  • 5

  • 1
  • 2
  • 3
  • 4
  • 5

示例2: 
剪切ip地址,如下:

cut {  -b List [  -n ] |  -c List |  -f List [  -s ] [  -d
Character ] } [ File … ]

参数:

        -b List    
钦定字节地方。这一个字节地方将忽略多字节字符边界,除非也钦定了 -n 标识。

 -c List     钦点字符地方。例如,借使你钦定 -c 一-7二,cut
命令将写出文件每一行的头 72 个字符。

  www.2cto.com  

  -d Character     使用 Character 变量内定的字符作为钦赐 -f
标记时的字段定界符。您必须在对 shell
有万分含义的字符(比如空格字符)上丰裕引号。

 

  -f List    
钦赐文件中挂念被定界符(缺省状态下为制表符)隔开分离的字段的列表。例如,要是你钦定-f 一,7,cut
命令将仅写出各类行的首先和第7个字段。假如行中不分包字段定界符,cut
命令将因此它们而不对其举行任何操作(对表格的副标题有用),除非钦赐了 -s
标记。

 

  -n     撤废分割多字节字符。仅和 -b
标记一齐行使。假若字符的末梢三个字节落在由 -b 标记的 List
参数提示的范围之内,该字符将被写出;不然,该字符将被清除。

 

 -s     撤销不带有定界符的行。仅和 -f 标识一同行使。

 

  说明:

 

cut命令必须钦赐 -b、-c 或 -f 标记之一。List
参数为3个以逗号分隔、以空格分隔或连字符分隔的整数的列表(顺序递增)。连字符分隔符表示范围。以下条目是
List 参数的有个别演示,它能够用来取代字节、字符或字段: 

 

1,4,7

1-3,8

-5,10

3-

中间 -五 为从第一个到第四个的简写方式,三-
为从第十个到最终二个的简写方式。

 

 

2、使用例子

1、# cat /etc/passwd |grep bash

root:x:0:0:root:/root:/bin/bash

beckham:x:500:500:beckhamkuang:/home/beckham:/bin/bash

king:x:501:501::/home/king:/bin/bash

mysql:x:100:103:MySQL server:/var/lib/mysql:/bin/bash

以: 分割拿第三列与第7列

# cut -d ‘:’ -f 1,7  /etc/passwd |grep bash

root:/bin/bash

beckham:/bin/bash

king:/bin/bash

mysql:/bin/bash

2、那里作者使用 -d 参数钦点了字段分割符为“:”

# tail -3 /etc/passwd|cut -f 1,6 -d’:’

beckham:/home/beckham

king:/home/king

mysql:/var/lib/mysql

 

三、倘使想驾驭系统中每一个用户的home目录都以如何,能够在/etc/password文件查找,然则来得全体的始末又比较乱,大家假设找到要求的内容就足以了:

# tail -3 /etc/passwd|cut -f 1,6 -d’:’

beckham:/home/beckham

king:/home/king

mysql:/var/lib/mysql

 

前面我们讲课的find、grep、sort、uniq命令都是行文本处理工科具,但是不少时候大家又想知道这么些行中某1列文本的始末或是…

相关文章