|
基本格式:cut -d ' 分隔字符 ' -f fields
cut -c 字符区间 参数:
-d : 后面接分割符。与 -f 一起使用;
-f : 依据 -d 的分割符将一段讯息分割成为数段,用 -f 取出其中的第几段;
-c : 以字节为单位取出固定字符区间。
--comlement : 以补足方式输出
--output-delimiter : 输出分隔符
应用举例-1(将 PATH 变量取出,找出第4个路径):beyes@linux-beyes:~> echo $PATH
/usr/lib/mpi/gcc/openmpi/bin:/home/beyes/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin
#找出上面蓝色加亮部分的路径并单独列出
beyes@linux-beyes:~> echo $PATH | cut -d ':' -f 4
/usr/bin
#另外,如果想同时列出第3和第5个路径,则如下
beyes@linux-beyes:~> echo $PATH | cut -d ':' -f 3,5
/usr/local/bin:/bin
应用举例-2(将 export 输出的信息,取出第 12 字节以后的所有字符串):beyes@linux-beyes:~> export
declare -x ALSA_CONFIG_PATH="/etc/alsa-pulse.conf"
declare -x COLORTERM="gnome-terminal"
declare -x CPU="i686"
declare -x CSHEDIT="emacs"
declare -x CVS_RSH="ssh"
.... .... ... 这里用 -c 参数来解决:beyes@linux-beyes:~> export | cut -c 12-
ALSA_CONFIG_PATH="/etc/alsa-pulse.conf"
COLORTERM="gnome-terminal"
CPU="i686"
CSHEDIT="emacs"
CVS_RSH="ssh"
... ... ... ... -c 参数后面是个范围,比如显式第 12-18 个字节里的内容,就是 cut -c 12-20 :beyes@linux-beyes:~> export | cut -c 12-20
ALSA_CONF
COLORTERM
CPU="i686
CSHEDIT="
CVS_RSH="
... ... ... ...
应用举例-3(从last命令中筛选出近一个月来登录的用户名):beyes@linux-beyes:~> last
beyes pts/4 :0.0 Mon Jun 1 23:52 - 23:54 (00:01)
beyes pts/3 :0.0 Mon Jun 1 23:23 still logged in
beyes pts/3 :0.0 Mon Jun 1 00:22 - 00:35 (00:12)
beyes pts/1 :0.0 Mon Jun 1 00:19 still logged in
root pts/3 :1.0 Sun May 31 18:06 - 18:11 (00:04)
root pts/1 192.168.2.104 Sun May 31 18:05 - 18:42 (00:37)
... ... ... ... 下面进行筛选:beyes@linux-beyes:~> last | cut -d ' ' -f 1
beyes
beyes
beyes
beyes
root
root 说明: 在上面,可以用空格作为间隔符来取出 last 命令结果的第一列信息(登录用户帐号)。但是第一列(用户名)和第二列(终端或虚拟终端)之间的空格不止一个,所以要用如 cut -d ' ' -f 1,2 这样形式的命令,输出结果并不是想要的。所以,用 cut 来处理多空格相连的数据时会显得吃力。cut 的用途主要用来分析日志(log)文件,其他场合所用不多。
--complement 以补足方式输出
有时文本中有许多列,我们如果想剔除掉其中少数几列,然后输出其他的列,那么此时使用 --complement 的补足方式输出就很方便了,比如:# cat tmp.txt
No Name Mark Percent
1 Tom 38 80
2 Jim 58 10
3 Lee 48 30
4 Ken 58 40 假设不想输出第 2 列,而其他列均要被输出,那么可以:# cut -f2 --complement tmp.txt
No Mark Percent
1 38 80
2 58 10
3 48 30
4 58 40
--output-delimiter 指定输出分隔符
有时可能为了输出的美观或以新一种的排版方式输出,我们需要自定义一个列的分隔符,如下面的测试文本:# cat temp.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
# cut temp.txt -c1-3,6-9 --output-delimiter ":"
abc:fghi
abc:fghi
abc:fghi
abc:fghi
下表是区间参数说明:
参数
| 说明
| N
| 第 N 个字节,字符或字段,从1开始计数
| N-
| 从第N个字节,字符或字段直至行尾
| N-M
| 从第N到第M(包括第M)个字节,字符或字段
| -M
| 从第 1 到第 M(包括第M)个字节,字符或字段
|
|
|