cut是一个针对行的数据选取命令
SYNOPSIS
cut [OPTION]... [FILE]...
OPTION
- -b 以字节为单位进行分割,如果是多字节的话就需要注意了
- -c 以字符为单位进行分割
- -d 自定义分割符,默认为制表符
- -f 显示哪个区域,与-d一起使用
- -n 表示一个范围,可与-b和-c一起使用
- -s 表示不包括那些不含分隔符的行
愉快的就开始吧
[root@iZ288fgkcpkZ cut]# tail - string.txt
冰川里的哈密瓜 职员 北京市 90后已婚小鲜肉
可乐的厨房 互联网 北京市 90后幸福小咖
蛋包饭喵喵 编辑 北京市 90后北京菇凉
爱学习的牛妈 *职业 安徽省 崇尚*的幸福妈咪
四毛的娘亲 全职妈妈 河南省 80后文艺娘亲
[root@iZ288fgkcpkZ cut]#
取出id
[root@iZ288fgkcpkZ cut]# tail - string.txt | cut -b - [root@iZ288fgkcpkZ cut]# tail - string.txt | cut -b - [root@iZ288fgkcpkZ cut]# tail - string.txt | cut -b ,,,- [root@iZ288fgkcpkZ cut]#
需要说下-n
n 只取出第n个字节/字符/字段
n- 取出第n个字节/字符/字段(包括n)到行尾
-n 取出第一个字节/字符/字段到第n个字节/字符/字段(包括n)
n-m 取出第n个字节/字符/字段(包括n)到第m个字节/字符/字段(包括m)
n,m 取出第n个字节/字符/字段,取出第m个字节/字符/字段
为什么上面最后一个列子并不是按照我写的顺序取出来的? 因为会先将其排序
取出昵称第一个字符
[root@iZ288fgkcpkZ cut]# tail - string.txt | cut -b ,,
冰
可
蛋
爱
四
[root@iZ288fgkcpkZ cut]# tail - string.txt | cut -b ,,
冰
可
蛋
爱
四
[root@iZ288fgkcpkZ cut]# tail - string.txt | cut -c
冰
可
蛋
爱
四
[root@iZ288fgkcpkZ cut]#
取出整个昵称呢?
[root@iZ288fgkcpkZ cut]# tail - string.txt |cut -f
冰川里的哈密瓜
可乐的厨房
蛋包饭喵喵
爱学习的牛妈
四毛的娘亲
[root@iZ288fgkcpkZ cut]# tail - string.txt| sed 's/\t/\s/g' |cut -d \s -f
冰川里的哈密瓜
可乐的厨房
蛋包饭喵喵
爱学习的牛妈
四毛的娘亲
[root@iZ288fgkcpkZ cut]#
如果指定了分割符,但是文本中有不包含分割符的行呢?
修改文本
[root@iZ288fgkcpkZ cut]# tail - string.txt
可乐的厨房 互联网 北京市 90后幸福小咖
蛋包饭喵喵 编辑 北京市 90后北京菇凉
爱学习的牛妈 *职业 安徽省 崇尚*的幸福妈咪
四毛的娘亲 全职妈妈 河南省 80后文艺娘亲
8523728亮晶晶妈全职妈妈广东省70后幸福宝妈1318111438684854
[root@iZ288fgkcpkZ cut]#
还是取出昵称列,用-s可以将不包含分割符的行排除出去
[root@iZ288fgkcpkZ cut]# tail - string.txt| cut -f
可乐的厨房
蛋包饭喵喵
爱学习的牛妈
四毛的娘亲
8523728亮晶晶妈全职妈妈广东省70后幸福宝妈1318111438684854
[root@iZ288fgkcpkZ cut]# tail - string.txt| sed 's/\t/\s/g' |cut -d \s -f
可乐的厨房
蛋包饭喵喵
爱学习的牛妈
四毛的娘亲
8523728亮晶晶妈全职妈妈广东省70后幸福宝妈1318111438684854
[root@iZ288fgkcpkZ cut]# tail - string.txt| sed 's/\t/\s/g' |cut -sd \s -f
可乐的厨房
蛋包饭喵喵
爱学习的牛妈
四毛的娘亲
[root@iZ288fgkcpkZ cut]#
2015-09-21 12:02:28