00. 目录
01. 命令概述
cut - 在文件的每一行中提取片断
说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指 明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3
将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。
02. 命令格式
cut [选项]… [文件]…
03. 常用选项
cut - 在文件的每一行中提取片断
在 每个文件 FILE 的 各行 中, 把 提取的 片断 显示在 标准输出.
-b, --bytes=LIST
输出 这些 字节
-c, --characters=LIST
输出 这些 字符
-d, --delimiter=DELIM
使用 DELIM 取代 TAB 做 字段(field) 分隔符
-f, --fields=LIST
输出 这些 字段
-n
(忽略)
-s, --only-delimited
不显示 没有 分隔符 的 行
--output-delimiter=STRING
使用 STRING 作为 输出分隔符, 缺省 (的 输出分隔符) 为 输入分隔符
--help
显示 帮助信息, 然后 结束
--version
显示 版本信息, 然后 结束
使用 且 只使用 -b, -c 或 -f 中的 一个 选项. LIST 由 一个 范围 (range) 或 逗号 隔开的 多个 范围 组成. 范围 是 下列 形式 之一:
N
第 N 个 字节, 字符 或 字段, 从 1 计数 起
N-
从 第 N 个 字节, 字符 或 字段 直至 行尾
N-M
从 第 N 到 第 M (并包括 第M) 个 字节, 字符 或 字段
-M
从 第 1 到 第 M (并包括 第M) 个 字节, 字符 或 字段
如果 没有 指定 文件 FILE, 或 FILE 是 -, 就从 标准输入 读取 数据.
04. 参考示例
示例文件
[deng@localhost test]$ cat test
rootx:0:0:
bin:x:1:1:
daemon:x:2
adm:x:3:4:
lp:x:4:7:l
[deng@localhost test]$ cat test2
任务一
任务二
任务三
任务四
任务五
任务六
任务七
[deng@localhost test]$
4.1 提取每一行的第一个字符
[deng@localhost test]$ cut -b 1 test
r
b
d
a
l
[deng@localhost test]$
4.2 提取每一行第 1 3 5个字符
[deng@localhost test]$ cut -b 1,3,5 test
rox
bnx
deo
amx
l::
[deng@localhost test]$
4.3 提取每一行第 1-5 个字符
[deng@localhost test]$ cut -b 1-5 test
rootx
bin:x
daemo
adm:x
lp:x:
[deng@localhost test]$
4.4 提取每一行第 1-5 个字符
[deng@localhost test]$ cut -b -5 test
rootx
bin:x
daemo
adm:x
lp:x:
[deng@localhost test]$
4.5 提取每一行第 3个字符以后的
[deng@localhost test]$ cut -b 3- test
otx:0:0:
n:x:1:1:
emon:x:2
m:x:3:4:
:x:4:7:l
[deng@localhost test]$
4.6 提取每一行的第一个汉字
[deng@localhost test]$ cut -b 1 test2
]0;deng@localhost:~/test[deng@localhost test]$
[deng@localhost test]$
出现了乱码的现象,因为-b 只是针对字节进行提取,对一个汉字进行字节提取,得到的结果必然是乱码,若想使用 -b 命令对字节进行提取,那么则需要使用 -n 选项,此选项的作用是取消分割多字节字符。
[deng@localhost test]$ cut -nb 1 test2
任
任
任
任
任
任
任
[deng@localhost test]$
或者
[deng@localhost test]$ cut -c 1 test2
任
任
任
任
任
任
任
[deng@localhost test]$
以上是提取第一个汉字。
4.7 提取前面两个汉字
[deng@localhost test]$ cut -nb 1,2 test2
任务
任务
任务
任务
任务
任务
任务
[deng@localhost test]$
或者
[deng@localhost test]$ cut -c 1,2 test2
任务
任务
任务
任务
任务
任务
任务
[deng@localhost test]$
4.8 提取前面三个汉字
[deng@localhost test]$ cut -nb 1,2,3 test2
任务一
任务二
任务三
任务四
任务五
任务六
任务七
[deng@localhost test]$
或者
[deng@localhost test]$ cut -c 1,2,3 test2
任务一
任务二
任务三
任务四
任务五
任务六
任务七
[deng@localhost test]$
4.9 提取前面四个汉字
文档中没有四个汉字的情形
[deng@localhost test]$ cut -nb 1,2,3,4 test2
任务一
任务二
任务三
任务四
任务五
任务六
任务七
[deng@localhost test]$
或者
[deng@localhost test]$ cut -c 1,2,3,4 test2
任务一
任务二
任务三
任务四
任务五
任务六
任务七
[deng@localhost test]$
4.10 以:分隔,将文件每一行分成若干列,显示第一列
[deng@localhost test]$ cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
4.11打印除了第二个字符之外的列
–complement 选项提取指定字符之外的列(打印除了第二个字符之外的列)
[deng@localhost test]$ cut -c2 --complement test
rotx:0:0:
bn:x:1:1:
demon:x:2
am:x:3:4:
l:x:4:7:l
[deng@localhost test]$
[deng@localhost test]$ cut -c1,2 --complement test
otx:0:0:
n:x:1:1:
emon:x:2
m:x:3:4:
:x:4:7:l
[deng@localhost test]$
4.12 定义以空格分隔,然后输出第二个字段
[deng@localhost test]$ cat test
r ootx:0:0:
b in:x:1:1:
d aemon:x:2
a dm:x:3:4:
l p:x:4:7:l
[deng@localhost test]$ cut -d ' ' -f2 test
ootx:0:0:
in:x:1:1:
aemon:x:2
dm:x:3:4:
p:x:4:7:l
[deng@localhost test]$