cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,grep、awk命令是筛选出特定的行,cut命令则是筛选出特定的列。
(1)cut命令参数
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
主要参数
-b :输入每行第n个字符(半角,注意如果有中文将乱码)。 -c :输入每行第n个字符(适用中文)。 -d :自定义分隔符,默认为制表符。 -f :与-d一起使用,指定显示哪个区域。 -n :取消分割多字节字符(例如中文)。仅和-b标志一起使用。
(2)cut命令用法实例
$ who | cut -b 3 #提取每行第3个字符(如果有中文字符将乱码) $ who | cut -b 3-5,8 #提取每行第3、4、5个字符和第8个字符 $ who | cut -b -3 #提取每行第1-3个字符(即前3个字符) $ who | cut -b 3- #提取每行第3个至最后一个字符 $ cut -c 3 ch.txt #提取每行第3个字符(适用中文) $ cat /etc/passwd | head -n 5 | cut -d : -f 1 #提取passwd文件中的前5个用户名(以冒号作为分割符) $ cat /etc/passwd | head -n 5 | cut -d : -f 1,3-5,7 $ cat /etc/passwd | head -n 5 | cut -d : -f -2 $ cat space.txt |cut -d ' ' -f 1 #提取space.txt中每行的第一个单词(以空格作为分割符)
要注意,cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦。例如以下命令的结果是一样的:
$ who | cut -b 3-5,8 $ who | cut -b 8,3-5
当遇到多字节字符(中文)时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开。例子如下:
$ cat ch.txt 星期一 星期二 星期三 星期四 $ cat ch.txt | cut -b 2 � � � � $ cat ch.txt | cut -nb 2 $ cat ch.txt | cut -nb 1,2,3 星 星 星 星
Leave a Reply