cut命令学习
发布于 2008-01-23 10:35 阅读:89,001 评论:0 标签: cut linux

    链接:http://www.ifpubs.com/books/aix52/cut.htm

    cut命令用途:从文件的每个行中写出选定的字节、字符或字段。

    语法:

以下是引用片段:
cut {  -b List [  -n ] |  -c List |  -f List [  -s ] [  -d Character ] } [ File ... ]

    必须指定 -b、-c 或 -f 标志之一。List 参数为一个以逗号分隔、以空格分隔或连字符分隔的整数的列表(顺序递增)。连字符分隔符表示范围。以下条目是 List 参数的一些示例,它可以用来指代字节、字符或字段:

以下是引用片段:
1,4,7
1-3,8
-5,10
3-

    其中 -5 为从第一个到第五个的简写形式,3- 为从第三个到最后一个的简写形式。

    参数:

以下是引用片段:

-b List 指定字节位置。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c List 指定字符位置。例如,如果您指定 -c 1-72,cut 命令将写出文件每一行的头 72 个字符。
-d Character 使用 Character 变量指定的字符作为指定 -f 标志时的字段定界符。您必须在对 shell 有特殊意义的字符(比如空格字符)上加上引号。
-f List 指定文件中设想被定界符(缺省情况下为制表符)隔开的字段的列表。例如,如果您指定 -f 1,7,cut 命令将仅写出每个行的第一和第七个字段。如果行中不包含字段定界符,cut 命令将通过它们而不对其进行任何操作(对表格的副标题有用),除非指定了 -s 标志。
-n 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除。
-s 取消不包含定界符的行。仅和 -f 标志一起使用。

    该命令返回以下退出值:

以下是引用片段:
0 所有输入文件被成功输出。
>0 发生一个错误。

    遇到的例子:找出服务器的ip地址。

    在FreeBSD中:

以下是引用片段:
/sbin/ifconfig | grep "inet 172" | cut -d " " -f2

    其中的"inet 172"为显示ip那一行的一个标志,目的是取出这一行。

    在CentOS中:

以下是引用片段:
/sbin/ifconfig | grep "inet addr:10.55" | cut -d ":" -f 2 | cut -d " " -f 1

    同上,"inet addr:10.55"目的是取出这一行。这个使用两次cut,因为偶使用一次时死活取不出来,晕死。

    可能根据自己的情况,上面的数字需要自己确定。

    注:使用“-d”参数时,需要注意只能是单个字符。否则会报错:

以下是引用片段:
cut: the delimiter must be a single character