2018-09-13 20:07:04 qq_34429725 阅读数 150
  • 大数据视频_Shell视频教程

    Shell是一个功能相当强大的编程语言,易编写、易调试、灵活性强。Shell可以帮助我们来管理大数据集群,提高开发效率。本课程详细讲解:Shell解析器、变量、运算符、条件判断、流程控制、函数、cut、sed、awk、sort和企业真题(京东、搜狐、新浪等)。课程中全程以案例贯穿,深入浅出 。

    2230 人正在学习 去看看 缪传海

高级文本处理命令 cut

cut:一个选取命令,将一段数据经过分析,取出我们想要的数据。一般来说,选取的数据通常是针对行来进行分析的,并不是整篇数据一起分析

语法 :
cut -nb 文件名
cut -c 文件名
cut -df 文件名
cut命令从文件中每一行剪切字节、字符和字段并将这些字节、字符和字段输出到标准输出。
如果不指定file参数,cut命令将读取标准输入。
注意:必须指定-b 或者 -c 或者-f 之一
-d :表示自定义分隔符,默认是制表符。与-f一起使用
-f :依据-d分割字符将一段信息分成多个字段,用-f 表示取出第几个字段
-c :以字符为单位取出固定的字符区间
-b : 以字节为单位取出固定的字节区间
-n :表示取消分割多字节字符。只与-b一起使用;如果字符的最后一个字节,落在了-b标志的参数范围内,那就会取出,否则将抛弃该字节字符

三种定位方式
字节 bytes —— b
字符 char —— c
字段 fileds —-f(域)

栗子:写一个文件1.avi touch 1.avi
往里面写入内容 cat <<EOF > cls.avi(/手动滑稽)

苍老师是个好老师
喜欢中国文化
爱好写大字

cut -nb 3-5 cls.avi   

输出:   苍
       喜
       爱
cut -c 3- cls.avi
输出:  师是个

域: 字段分割
echo $PATH | cut -d ':' -f 2

echo $PATH | cut -d ':' -f 3-

echo $PATH | cut -d ':' -f 1,7

echo $PATH | cut -d ':' -f 7,1
注意:分隔符只能是一个字符,或者空格,如果分割符是多个字符或字节,cut无效

数据处理之awk

awk 的使用方法很简单
awk的3种调用方式
1.命令行
格式为 awk [-F fileds -separator] '命令' 要操作的文件'\

2.shell 脚本方式
将所有的AWK命令写入一个文件中,并使AWK脚本可执行,然后awk命令解析器作为脚本的首行,以便通过
awk脚本来调用,相当于shell脚本首行的#bin/bash

3.文件
将所有的AWK命令插入一个单独的文件,然后调用awk -f + awk脚本 input-files
-f 表示加载的awk的脚本文件
awk -f awk.sh /root/multi.data

栗子:

1.输出文件的每一行:
awk '{print $0}' ./employee.txt

2.输出/etc/passwd第一个字段
 awk  -F ":" '{print $1}' /etc/passwd

3.打印文件的全部内容
awk '{print $0}' employee.txt

4.抽取文件test中的第一列
awk '{print $1}' employee.txt  
或者
awk -F ' ' '{print $1}' employee.txt 


5.列出所有的用户名和登陆的shell名
awk -F ':' '{print $1,$6}' /etc/passwd

当分隔符为多个符号时,如:
a , b , c , d
a1 , b1 , c1 , d1 
awk -F ' , ' '{print $1,$2}' 文件名


6.打印用户名为root的那一行
awk -F ':' '$1=="root" {print $0}' /etc/passwd
或者
awk -F ':' '$1=="keke" {print $1}' /etc/passwd

说明:$1=="root"和$1=="keke"都是属于判断条件  

awk工作流程是这样的:读入有’\n’换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,0,1表示第一个域,$n表示第n个域。默认域分隔符是”空白键” 或 “[tab]键”。

给输出信息加上表头

awk -F ":" 'BEGIN {print "name\tshell\n--------------------------------"}
{print $1"\t"$6}' /etc/passwd

.给输出信息加上表头和末尾

awk -F : 'BEGIN {print "name\tshell\n--------------------------------"} {print $1"\t"$6} 
END {print "end-of-report"}' /etc/passwd

awk -F ":" 'BEGIN {print"--BEGIN--"} 
           $1=="root" { print $1} 
           END{print"----END------"}' /etc/passwd

awk -F ":" 'BEGIN {print"--BEGIN--"} {if( $1=="root") print $1} 
END{print"----END------"}' /etc/passwd

awk工作流程是这样的:先执行BEGING,然后读取文件,读入有/n换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域,随后开始执行模式所对应的动作action。接着开始读入第二条记录······直到所有的记录都读完,最后执行END操作

正则表达式匹配格式
1)n 2)if(n~正则表示式) print $0

1.打印以root开头的行
awk -F “:” ‘0 ~ /^root/’ /etc/passwd  awk -F: ‘{if(0 ~ /^root/) print $0}’

2.打印以ntp开头并以login结尾的行
awk -F : ‘0 /ntp.login/ ’ /etc/passwd

3.打印包含nobody的行
awk -F : ‘{if(1 /nobody/)print0}’ /etc/passwd

4.打印包含nobody或Nobody的行
awk -F : ‘{if(1 /[Nn]obody/)print0}’ /etc/passwd

精确匹配
打印名字为root的用户在/etc/passwd文件中的记录

awk -F':' '{if($1=="root") print$0}' /etc/passwd
2011-02-20 09:40:27 czmmiao 阅读数 109
  • 大数据视频_Shell视频教程

    Shell是一个功能相当强大的编程语言,易编写、易调试、灵活性强。Shell可以帮助我们来管理大数据集群,提高开发效率。本课程详细讲解:Shell解析器、变量、运算符、条件判断、流程控制、函数、cut、sed、awk、sort和企业真题(京东、搜狐、新浪等)。课程中全程以案例贯穿,深入浅出 。

    2230 人正在学习 去看看 缪传海
cut命令可以从一个文本文件或者文本流中提取文本列。
 命令用法:
       cut -b list [-n] [file ...]
       cut -c list [file ...]
       cut -f list [-d delim][-s][file ...]
 
 
l      上面的-b、-c、-f分别表示字节、字符、字段(即byte、character、field);
l      list表示-b、-c、-f操作范围,-n常常表示具体数字;
l      file表示的自然是要操作的文本文件的名称;
l      delim(英文全写:delimiter)表示分隔符,默认情况下为TAB;
l      -s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)
上面三种方式中,表示从指定的范围中提取字节(-b)、或字符(-c)、或字段(-f)。
范围的表示方法:
N
 只有第N项
 
N-
 从第N项一直到行尾
 
N-M
 从第N项到第M项(包括M)
 
-M
 从一行的开始到第M项(包括M)
 
-
 从一行的开始到结束的所有项
 
下面是实例,先以较简单的“命令用法”中提及的第二条开始讲起:
 
interrupts文件中的字符排列非常齐整,正适合我们切豆腐。
但这里我们只对两个数字列感兴趣,用法如下:
 

里面还有一些不需要的内容,精减一下:
 
合到一起:
哇,果然够帅!!
 
不相邻列的截选又应该如何做呢?

这种方式需要事先确定占多少个字符位置,不仅麻烦,而且容易出错。
 
下面的问题该怎么去做?
 
 
这就是第二讲:使用cut –f提取文本中的字段。
cut –c主要是用来在固定字符位置或个数的文本文件中提取,对于上面的例子就显得无能为力了。仔细观察,发现passwd文件有个规律,就是以冒号来区分不同的段的文本,于是。。。
 
怎么样,好玩吧~!
 
继续,创建一个文本文件,名为a.txt,名字有点土,凑合着用吧。

A1、B1、C1所代表的行字符之间均以TAB分隔,D1却是以空格来分开的。

看到-s的作用了吗?(因为第一行不含有任何TAB字符,所以直接被剔除了),而最后一行(即D1行),是以空格区分间距,所以也不合要求。
 
多了个参数,这个我没讲,只要你的智商比范伟高一点点,就肯定能猜出来啦。^_^
 
好了,下面是最后一个用法的讲解了:
 

 
因为虚拟终端下无法显示汉字,所以我只好回到图形下,截图就成这个白不垃圾的样子啦,忍忍吧,就快讲完了。
在这个文件中,每个汉字都是用半角空格分隔的。
 



 

用cut –c已经成功了,下面试试cut –b怎么样?
 
没有反应,why?

  
原因在于汉字本身是双字节的,cut –c把汉字“我”当成一个字符来处理,而cut –b是以字节来处理,把“我”拆成了两个字节,结果是字符被“切成两半”,因此无法正常显示。
 
原因找到了,要怎么办才好呢?
 


it's ok!

参考至:http://www.cublog.cn/u2/76835/showart_2013601.html
如有错误,欢迎指正
邮箱:czmcj@163.com

2013-06-01 11:10:25 zhangmingxingwei 阅读数 1500
  • 大数据视频_Shell视频教程

    Shell是一个功能相当强大的编程语言,易编写、易调试、灵活性强。Shell可以帮助我们来管理大数据集群,提高开发效率。本课程详细讲解:Shell解析器、变量、运算符、条件判断、流程控制、函数、cut、sed、awk、sort和企业真题(京东、搜狐、新浪等)。课程中全程以案例贯穿,深入浅出 。

    2230 人正在学习 去看看 缪传海
1. cut命令用法如下:  (转)

cut -b list [-n] [file ...]

cut -c list [file ...]

cut -f list [-d delim][-s][file ...]


 

     上面的-b、-c、-f分别表示字节、字符、字段(即byte、character、field);

     list表示-b、-c、-f操作范围,-n常常表示具体数字;

     file表示的自然是要操作的文本文件的名称;

     delim(英文全写:delimiter)表示分隔符,默认情况下为TAB;

     -s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)


上面三种方式中,表示从指定的范围中提取字节(-b)、或字符(-c)、或字段(-f)。


范围的表示方法:

 

N

只有第N项

N-

从第N项一直到行尾

N-M

从第N项到第M项(包括M)

-M

从一行的开始到第M项(包括M)

-

从一行的开始到结束的所有项



 

下面是实例,先以较简单的“命令用法”中提及的第二条开始讲起:

 

 

interrupts文件中的字符排列非常齐整,正适合我们切豆腐。

 

 

 

但这里我们只对两个数字列感兴趣,用法如下:

 

 

 

 

里面还有一些不需要的内容,精减一下:

关于正则表达式的使用,请自行查阅相关资料。

 

 

 

 

合到一起:

cut -c1-15  从第1列到15列

哇,果然够帅!!

 

 

不相邻列的截选又应该如何做呢?

cut -c1-4,34-    从1-4, 34到结束

 

这种方式需要事先确定占多少个字符位置,不仅麻烦,而且容易出错。

 

 

下面的问题该怎么去做?

 

 

 

 

这就是第二讲:使用cut –f提取文本中的字段。

 

cut –c主要是用来在固定字符位置或个数的文本文件中提取,对于上面的例子就显得无能为力了。仔细观察,发现passwd文件有个规律,就是以冒号来区分不同的段的文本,于是。。。


cut -f1 -d':' 

 

 

怎么样,好玩吧~!

 

 

继续,创建一个文本文件,名为a.txt,名字有点土,凑合着用吧。

 

A1、B1、C1所代表的行字符之间均以TAB分隔,D1却是以空格来分开的。

 

 

 

 

 

看到-s的作用了吗?(因为第一行不含有任何TAB字符,所以直接被剔除了),而最后一行(即D1行),是以空格区分间距,所以也不合要求。

 

 

 

 

多了个参数,这个我没讲,只要你的智商比范伟高一点点,就肯定能猜出来啦。^_^

 

 

 

好了,下面是最后一个用法的讲解了:

 

 

 

因为虚拟终端下无法显示汉字,所以我只好回到图形下,截图就成这个白不垃圾的样子啦,忍忍吧,就快讲完了。

  

在这个文件中,每个汉字都是用半角空格分隔的。

 

 

 

 

 

 

用cut –c已经成功了,下面试试cut –b怎么样?

没有反应,why?

 

   

原因在于汉字本身是双字节的,cut –c把汉字“我”当成一个字符来处理,而cut –b是以字节来处理,把“我”拆成了两个字节,结果是字符被“切成两半”,因此无法正常显示。

 

 

原因找到了,要怎么办才好呢?

 

 

 

耶!!!搞定。

 

2012-02-29 21:38:12 liuyua 阅读数 3615
  • 大数据视频_Shell视频教程

    Shell是一个功能相当强大的编程语言,易编写、易调试、灵活性强。Shell可以帮助我们来管理大数据集群,提高开发效率。本课程详细讲解:Shell解析器、变量、运算符、条件判断、流程控制、函数、cut、sed、awk、sort和企业真题(京东、搜狐、新浪等)。课程中全程以案例贯穿,深入浅出 。

    2230 人正在学习 去看看 缪传海

 这里只是一个简单的整理。。。       

1、 cut

用法:cut -d  '分隔符' -f fields

      cut -c  字符范围

参数

      -d   后面接分隔符,将一行以分隔符为界分为数段。与-f一起使用。

      -f   取出第fields段。

      -c   以字符为单位取出字符范围内的字符。 

举例

[root@Ca03 ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tools/share/mpich2/bin
[root@Ca03 ~]# echo $PATH|cut -d ':' -f 5
/sbin

[root@Ca03 ~]# echo $PATH|cut -c 15-34
sbin:/usr/kerberos/b

 

2、 grep

用法:grep [参数]   '搜索字符串'    [filename]

参数

      -a   将二进制文件以文本文件的方式搜索数据

      -c   计算找到‘搜索字符串’的次数

      -i   忽略大小写的不同

      -n   顺便输出行号

      -v   选出不含‘搜索字符串’的行

举例

 

[root@Ca03 ~]# last | grep -v 'root'

reboot   system boot  2.6.18-164.11.1. Mon Feb 20 17:02         (9+04:16)  
reboot   system boot  2.6.18-164.11.1. Mon Feb  6 09:26         (23+11:53) 
reboot   system boot  2.6.18-164.11.1. Thu Jan  5 11:39         (14+05:07) 
reboot   system boot  2.6.18-164.11.1. Mon Dec 12 10:54         (3+22:10)  
reboot   system boot  2.6.27           Tue Dec  6 16:15         (5+18:35)  
reboot   system boot  2.6.18-128.el5   Tue Nov 29 16:58         (12+17:52) 
reboot   system boot  2.6.18-128.el5   Thu Nov 24 14:34         (17+20:16) 
reboot   system boot  2.6.27           Wed Nov 16 08:56         (8+05:33)  
reboot   system boot  2.6.27           Fri Sep 30 20:25          (00:59)   
reboot   system boot  2.6.27           Fri Sep 23 17:01         (4+16:35)  
reboot   system boot  2.6.27           Mon Aug 15 08:50         (39+08:07) 
reboot   system boot  2.6.27           Tue Aug  2 13:08         (52+03:48) 
reboot   system boot  2.6.27           Thu Jul 14 11:26         (71+05:31) 
reboot   system boot  2.6.27           Mon Jun 27 12:23         (88+04:34) 
reboot   system boot  2.6.27           Mon Jun 27 10:13          (02:05)   
reboot   system boot  2.6.27           Mon Jun 27 08:56          (01:12)   
reboot   system boot  2.6.27           Sat Jun 25 12:37         (1+20:15)  

wtmp begins Sat Jun 25 09:42:19 2011

 

3、 sort

用法:sort [参数] [file or stdin]

参数

      -f  忽略大小写的差异

      -b  忽略最前面的空格符

      -M  以月份的名字来排序

      -n  使用纯数字排序

      -r  反向排序

      -u  相同的数据,仅显示一行

      -t  分隔符,默认tab

      -k  按某个字段来进行排序

举例:

[root@Ca03 ~]# cat /etc/passwd | sort -t ':' -k 3 -n

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
squid:x:23:23::/var/spool/squid:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
amanda:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin

 

4、 wc

用法:wc [参数]

参数

      -l  仅显示多少行

      -w  仅显示多少字(英文单词)

      -m  多少字符

      -c  统计一个文件有多少字符

举例

[root@Ca03 ~]# cat /etc/man.config | wc
    141     722    4617
[root@Ca03 ~]# last |grep [a-zA-Z]|grep -v 'wtmp'|wc -l
250

 

5、uniq

用法:uniq [参数]

参数

      -i   忽略大小写

      -c   进行计数

举例

[root@Ca03 ~]# last | cut -d ' ' -f 1|sort|uniq -c
  
    1
     17 reboot
    233 root
      1 wtmp

 

 

2016-09-17 15:17:01 yangshangwei 阅读数 26963
  • 大数据视频_Shell视频教程

    Shell是一个功能相当强大的编程语言,易编写、易调试、灵活性强。Shell可以帮助我们来管理大数据集群,提高开发效率。本课程详细讲解:Shell解析器、变量、运算符、条件判断、流程控制、函数、cut、sed、awk、sort和企业真题(京东、搜狐、新浪等)。课程中全程以案例贯穿,深入浅出 。

    2230 人正在学习 去看看 缪传海

概述

cut是一个选取命令,。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。


语法

cut  [-bn] [file] 

cut [-c] [file]  

 cut [-df] [file]

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出

如果不指定 File 参数,cut 命令将读取标准输入。

必须指定 -b、-c 或 -f 标志之一。

cut 默认以制表符为分隔符


参数说明

  • -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
  • -c :以字符为单位进行分割。
  • -d :自定义分隔符,默认为制表符。
  • -f :与-d一起使用,指定显示哪个区域。
  • -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。

cut命令主要是接受三个定位方法:

  • 第一,字节(bytes),用选项-b
  • 第二,字符(characters),用选项-c
  • 第三,域(fields),用选项-f

这里写图片描述


cut -b

[root@entel2 ~]# who
root     tty1         2016-08-22 06:47 (:0)
root     pts/2        2016-09-20 18:18 (10.45.35.59)
root     pts/0        2016-09-20 14:25 (10.45.22.82)

以下的cut截取都以上数据为准

提取每一行的第3个字节

[root@entel2 ~]# who | cut -b 4
t
t
t

提取第1,第2、第3个字节

[root@entel2 ~]# who|cut -b 1-3
roo
roo
roo

[root@entel2 ~]# who|cut -b 1,2,3
roo
roo
roo

-b支持形如1-3的写法,而且多个定位之间用逗号隔开就可以了。

注意:

cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。不能颠倒定位的顺序。

其他:

-3表示从第一个字节到第三个字节, 而3-表示从第三个字节到行尾。如果你细心,你可以看到这两种情况下,都包括了第三个字节


如果执行who|cut -b -3,3-,你觉得会如何呢?答案是输出整行,不会出现连续两个重叠的第三个字节的


cut -b

[root@entel2 ~]# who|cut -c 1-3
roo
roo
roo

额 看着怎么和-b没有什么区别啊?莫非-b和-c作用一样?

其实不然,看似相同,只是因为这个例子举的不好,who输出的都是单字节字符,所以用-b和-c没有区别,如果提取中文,区别就看出来了来。

汉字本身是双字节的,cut –c把汉字“小”当成一个字符来处理,而cut –b是以字节来处理,把“小”拆成了两个字节,结果是字符被“切成两半”,因此无法正常显示。

栗子

[root@entel2 ~]# cat cut.txt 
周杰伦
邓紫棋
薛之谦
李荣浩
小工匠

see ,出问题了吧

[root@entel2 ~]# cat cut.txt | cut -b 3
¨




[root@entel2 ~]# 

[root@entel2 ~]#  cut -b 3 cut.txt 
¨




[root@entel2 ~]# 

换成 -c 来试试吧

[root@entel2 ~]# cut -c 3 cut.txt 
伦
棋
谦
浩
匠

总结: -c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码。


提高:

当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开。

[root@entel2 ~]# cat cut.txt |cut -b 2




°
[root@entel2 ~]# cat cut.txt |cut -nb 2





[root@entel2 ~]# cat cut.txt |cut -nb 1,2,3
周
邓
薛
李
小
[root@entel2 ~]# 

cut -f

为什么会有“域”的提取呢,因为刚才提到的-b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息则束手无策。

这时候“域”就派上用场了。如果你观察过/etc/passwd文件,你会发现,它并不像who的输出信息那样具有固定格式,而是比较零散的排放。

但是,冒号在这个文件的每一行中都起到了非常重要的作用,冒号用来隔开每一个项。

我们很幸运,cut命令提供了这样的提取方式,具体的说就是设置“间隔符”,再设置“提取第几个域”,就OK了!

栗子

数据:以/etc/passwd的前五行内容为例:

[root@entel2 ~]# head -n 5  /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

提取用户名

[root@entel2 ~]# head -n 5  /etc/passwd|cut -d : -f 1
root
bin
daemon
adm
lp
[root@entel2 ~]# 

用-d来设置间隔符为冒号,然后用-f来设置我要取的是第一个域。

当然,在设定-f时,也可以使用例如3-5或者4-类似的格式:

[root@entel2 ~]# cat /etc/passwd | head -n 5 | cut -d : -f 1,3-5
root:0:0:root
bin:1:1:bin
daemon:2:2:daemon
adm:3:4:adm
lp:4:7:lp

包含 3 和5 说在的field 。

遇到空格和制表符时,怎么分辨

这里写图片描述

tab制表符 直接 按 tab键即可打出

[root@entel2 ~]# sed -n l tablespace.txt 
this is tab\tfinish.$
this is serveral space      finish.$

如果是制表符(TAB),那么会显示为\t符号,如果是空格,就会原样显示。
通过此方法即可以判断制表符和空格了。

上面sed -n后面的字符是L的小写字母,看清楚了撒

在cut -d中用什么符号来设定制表符或空格

cut的-d选项的默认间隔符就是制表符,所以当你就是要使用制表符的时候,完全就可以省略-d选项,而直接用-f来取域就可以了。

如果你设定一个空格为间隔符,那么就这样:

[root@entel2 ~]# cat tabspace.txt | cut -d ' ' -f 1
this
this
[root@entel2 ~]# 

两个单引号之间必须要有一个空格,否则就输出全部内容了

而且,你只能在-d后面设置一个空格,可不许设置多个空格,因为cut只允许间隔符是一个字符。 多个空格报错如下…

[root@entel2 ~]# cat tabspace.txt | cut -d '  '  -f 1
cut: the delimiter must be a single character
Try `cut --help' for more information.
You have new mail in /var/spool/mail/root

cut的缺陷和不足

处理多空格…..

如果文件里面的某些域是由若干个空格来间隔的,那么用cut就有点麻烦了,因为cut只擅长处理“以一个字符间隔”的文本内容

linux---cut,grep用法

阅读数 157

没有更多推荐了,返回首页