DeniseJoe
作者DeniseJoe·2012-03-01 17:23
系统架构师·IBM

命令cut 详解

字数 1287阅读 3781评论 0赞 0
想必在脚本开发的过程中我们很多时候都会遇到截取字段或字符的情况吧,在这之前本人一般都是通过awk命令来截取每一行的某个字段,用cut来截取字符,今天彻底学了一下cut命令,发现用其来获取字段也不无为一个好的方式,所以特此总结一下cut的详细用法。
先从cut -h 开始和cut的定义开始:
Purpose: Helps split the lines of a file.
Usage: cut -b List [-n] [File...]
   or: cut -c List [File...]
   or: cut -f List [-d Character] [-s] [File...]
1.首先-b顾名思义是byte(字节)的意思,即按字节来分割,所以其用途当然一般是用于如English之类的单字节的的情况下,同时注意空格也占用一个byte
三个例子:
root@eihost11:/# echo thisisatestline | cut -b 3
i
root@eihost11:/# echo "My name is XX" | cut -b 3,4-6
 nam
root@eihost11:/# echo "My name is XX" | cut -b -3,7-
My e is XX
2.其次是-c顾名思义是character(字符)的意思,即按字符来分割。最能清楚的反应字符和字节的区别就在于多字节的编码的情况下,例如中文。
例子:
root@eihost11:/# echo 星期一 | cut -c 3

root@eihost11:/# echo 星期一 | cut -b 3

注:此处则显示乱码,因为中文是多字节编码,硬生生从里面去截取一个字节,那么系统只能给你显示一个看不懂得符号了,那么此时可以使用-n选项,-n用于告诉cut不要将多字节字符拆开
root@eihost11:/# echo 星期一 | cut -nb 3

3.最后-f顾名思义就是filed(字段)的意思,即按字段来划分。其中经常与-d (divide)结合使用,举例说明:
root@eihost11:/# echo "The Line is divided by space" | cut -d ' ' -f 2,3
Line is
root@eihost11:/# echo "The:line:is:divided:by:colon" | cut -d : -f -2,4-
The:line:divided:by:colon
root@eihost11:/# echo "The      Line    By      Table"|cut -f 2-4
Line    By      Table
由此得出默认分隔符为table 键





如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广