linux cut用法

一、作用

cut命令是一个选取命令,其功能是将文件中的每一行”字节” ”字符” ”字段” 进行剪切,选取我们需要的,并将这些选取好的数据输出至标准输出

二、格式

cut -[n]b file
cut -c file
cut -d[分隔符] -f[域] file

三、参数解释

-b(bytes) :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c(characters) :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f(filed) :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除。

四、实例分析

新建一个test1.txt,如下

557adfhg
bcd5464b
135465453456
233546576
[root@localhost shell]# 

新建一个test2.txt,如下

[root@localhost shell]# cat test2.txt 
星期一
星期二
星期三
星期四
星期五
星期六
星期日
[root@localhost shell]# 

1) -b

1.剪切单个字节

如下,只剪切txt中的每一行的第一个字节

[root@localhost shell]# cut -b 1 test1.txt 
5
b
1
2
[root@localhost shell]# 

2.剪切多个字节

剪切多个字符有很多方式,
如 -b 1,3,5 //剪切每一行第 1 3 5个字符 (示例1)
如 -b 1-5 //剪切每一行第 1-5 个字符 (示例2)
如 -b -5 //剪切每一行第 1-5 个字符 (示例3)
如 -b 3- //剪切每一行第 3个字符以后的 (示例4)

示例1:

[root@localhost shell]# cut -b 1,3,5 test1.txt 
57d
bd4
156
234
[root@localhost shell]# 

示例2:

[root@localhost shell]# cut -b 1-5 test1.txt 
557ad
bcd54
13546
23354
[root@localhost shell]# 

示例3:

[root@localhost shell]# cut -b -5 test1.txt 
557ad
bcd54
13546
23354
[root@localhost shell]# 

示例4:

[root@localhost shell]# cut -b 3- test1.txt 
7adfhg
d5464b
5465453456
3546576
[root@localhost shell]# 

3.剪切字符

首先按照上面的例子对test2.txt进行操作,看有什么现象

[root@localhost shell]# cut -b 2 test2.txt 
�
�
�
�
�
�
�
[root@localhost shell]# 

出现了乱码的现象,因为-b 只是针对字节进行裁剪,对一个汉字进行字节裁剪,得到的结果必然是乱码,若想使用 -b 命令对字节进行裁剪,那么则需要使用 -n 选项,此选项的作用是取消分割多字节字符。

[root@localhost shell]# cut -nb 3 test2.txt 

星
星
星
星
星
星
[root@localhost shell]# cut -nb 3,6  test2.txt 
星
星期
星期
星期
星期
星期
星期
[root@localhost shell]# cut -nb 3,6,9  test2.txt 
星期
星期二
星期三
星期四
星期五
星期六
星期日
[root@localhost shell]# cut -nb 3,6,9,12  test2.txt 
星期一
星期二
星期三
星期四
星期五
星期六
星期日
[root@localhost shell]# 

2) -c

-c的作用就是剪切字符,和上面的 -nb 有些类似

[root@localhost shell]# cut -c 1 test2.txt 

星
星
星
星
星
星
[root@localhost shell]# cut -c 2 test2.txt 
星
期
期
期
期
期
期
[root@localhost shell]# cut -c 1-3 test2.txt 
星期
星期二
星期三
星期四
星期五
星期六
星期日
[root@localhost shell]# 

3)-f

上面的-b -c 只是针对于格式固定的数据中剪切,但是对于一些格式不固定的,就没有办法获取到我们想要的数据,因此便有了 -f 域的概念。

示例1:

[root@localhost shell]# cat /etc/passwd | head -n 3
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@localhost shell]# 

例如将上面的第一个 : 前面的字符给剪切出来,那么我们就可以使用 -d 命令,指定其分割符为 : 然后再选取第一个域内的内容即可,如下

[root@localhost shell]# cat /etc/passwd | head -n 3 | cut -d : -f 1
root
bin
daemon
[root@localhost shell]# 

示例2:
剪切ip地址,如下:

[root@localhost shell]# ifconfig eth0 | grep "inet addr"
          inet addr:192.168.1.199  Bcast:192.168.1.255  Mask:255.255.255.0
[root@localhost shell]# ifconfig eth0 | grep "inet addr" | cut -d : -f 2
192.168.1.199  Bcast        //以 : 为分隔符,选取第二个域里面的内容,输出
[root@localhost shell]# ifconfig eth0 | grep "inet addr" | cut -d : -f 2 | cut -d ' ' -f 1 
192.168.1.199             //以空格为分割符,选取第一个域内的内容,输出
[root@localhost shell]# 

菜鸟一枚,如有错误,多多指教。。。

<think>好的,我现在需要帮助用户了解Linuxcut命令的使用方法和示例。首先,我应该回顾用户提供的引用内容,确保信息准确。用户引用了多个来源,其中提到cut命令用于按列提取文本,支持分隔符和字段选择,还有补集操作和字符位置截取。 首先,我需要明确cut命令的基本功能。根据引用[5],cut主要用于按列提取内容,可以处理文件和标准输入。接着,引用[1]和[2]提到常用的选项,比如-d指定分隔符,-f选择字段,-c按字符位置截取,--complement取补集。这些是核心参数,必须涵盖。 接下来,我需要组织结构,让回答清晰。用户可能需要先了解基本格式,再学习常用选项,然后通过实例掌握用法。根据引用[2]的结构,分步骤说明不同的使用场景是个好方法。例如,使用分隔符提取特定列、多列、补集,以及按字符截取。 然后,我需要检查每个实例是否正确。比如,引用[3]中的例子使用了--complement来排除第二列,这应该在补集部分提到。而引用[4]提到了合并文件的功能,但根据标准cut文档,这可能不太准确,因为cut主要用于提取而非合并。因此,可能需要忽略这部分,避免误导用户。 另外,需要注意用户提到的格式要求:行内数学表达式用$...$,但这里可能用不上,不过要确保LaTeX语法正确。但cut命令的说明主要涉及命令行参数,可能不需要数学公式,所以这点可以忽略。 用户还要求生成相关问题,我需要根据内容提出相关问题,比如如何指定多个字段,如何处理固定宽度的文本,或者使用补集选项的场景。 最后,确保回答使用中文,结构清晰,步骤分明,并正确引用来源。需要验证每个示例的正确性,例如使用-d和-f的组合,确保分隔符和字段数的对应,以及字符截取的起始位置是否正确(从1开始计数)。 总结,回答的结构应该是: 1. 命令格式 2. 常用选项说明 3. 使用实例,分不同情况 4. 注意事项 5. 相关问题 这样用户能逐步学习,并通过实例加深理解。同时,注意事项部分要提醒常见错误,比如分隔符和字段的匹配,字符位置的范围等。</think>### Linux cut命令使用教程 #### 一、命令格式 ``` cut [选项] [文件] ``` #### 二、常用选项说明 1. `-d`:指定字段分隔符(默认是制表符) 2. `-f`:选择指定字段(列),支持`1,3`或`1-3`格式 3. `-c`:按字符位置截取文本 4. `--complement`:反向选择(排除指定字段或字符)[^3] #### 三、使用实例 ##### 1. 按分隔符提取字段 **示例1:提取/etc/passwd的用户名(第1列)** ```bash cut -d ':' -f 1 /etc/passwd ``` - `-d ':'`:以冒号分隔字段 - `-f 1`:选择第1列[^2] **示例2:提取多列(第1列和第3列)** ```bash cut -d ',' -f 1,3 data.csv ``` ##### 2. 反向选择字段 **示例:排除第2列** ```bash grep '/bin/bash' /etc/passwd | cut -d ':' --complement -f 2 ``` - `--complement`:保留除第2列外的所有列 ##### 3. 按字符位置截取 **示例:提取每行第2-5个字符** ```bash cut -c 2-5 filename.txt ``` - `-c 2-5`:截取第2到第5个字符[^2] ##### 4. 处理固定宽度文本 **示例:提取日志中的时间戳(假设时间戳占前15字符)** ```bash cut -c 1-15 access.log ``` #### 四、注意事项 1. 若未指定分隔符,默认仅支持制表符分隔的文本 2. 字段编号从`1`开始,范围需合理(如`-f 1-3`不可超过总列数) 3. 处理含空格的文本时,需确保正确指定分隔符[^5]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值