【Linux】一步一步学Linux——cut命令(44)

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]$ 

05. 附录

参考:【Linux】一步一步学Linux系列教程汇总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值