首页 > 代码库 > shell文本过滤编程(十):cut命令
shell文本过滤编程(十):cut命令
【版权声明:转载请保留出处:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】
cut命令类似于awk,从行里面抽取信息,是一个功能弱化版的awk。
cut命令格式为:cut [options] filename其中options有:
-d 指定与空格和t a b键不同的域分隔符。类似于awk的“-F”。
-f field 指定剪切域数
-c list 指定剪切字符数。
首先我们来处理按:分割的password文件:
# cat passwd root:x:0:0:root:/root:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh operator:x:37:37:Operator:/var:/bin/sh ftp:x:83:83:ftp:/home/ftp:/bin/sh nobody:x:99:99:nobody:/home:/bin/sh sshd:x:103:99:Operator:/var:/bin/sh按:分割,然后取第一列和第六列,-f可以指定获取的域数:
# cut -d: -f1,6 passwd root:/root proxy:/bin operator:/var ftp:/home/ftp nobody:/home sshd:/var指定域数还可以这样写:
# cut -d: -f 1-4,6 passwd root:x:0:0:/root proxy:x:13:13:/bin operator:x:37:37:/var ftp:x:83:83:/home/ftp nobody:x:99:99:/home sshd:x:103:99:/varawk的实现为:
# awk -F: 'BEGIN{OFS=":"}{print $1,$2,$3,$4,$6}' passwd root:x:0:0:/root proxy:x:13:13:/bin operator:x:37:37:/var ftp:x:83:83:/home/ftp nobody:x:99:99:/home sshd:x:103:99:/var但是如果要指定多个字符来分割的话,cut就不行了,cut只支持单个分隔字符,二awk支持多个。比如我们以“bin”分分隔:
# awk -F"bin" 'BEGIN{OFS=":"}{print $1}' passwd root:x:0:0:root:/root:/ proxy:x:13:13:proxy:/ operator:x:37:37:Operator:/var:/ ftp:x:83:83:ftp:/home/ftp:/ nobody:x:99:99:nobody:/home:/ sshd:x:103:99:Operator:/var:/使用cut:
# cut -d"bin" -f1 passwd cut: the delimiter must be a single character Try 'cut --help' for more information.这里可以看见cut命令的功能很有限。
cut默认以tab键来分割,awk默认以空格或多个空格或tab键来分割:
# sed 's/:/\t/g' passwd | cut -f5 root proxy Operator ftp nobody Operator # sed 's/:/\t/g' passwd | awk '{print $5}' root proxy Operator ftp nobody Operatorcut可以剪切第任意字符,看似功能强大,但很少有使用价值。使用- c选项指定精确剪切数目。这种方法需确切知道开始及结束字符。通常不用这种方法,除非在固定长度的域或文件名上。
来看几个例子就行了:
# cut -c1,2,4 passwd rot prx opr ft: noo ssd
# cut -c5-9 passwd :x:0: y:x:1 ator: x:83: dy:x: :x:10
shell文本过滤编程(十):cut命令
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。