Linux的 cut用法精选

【shell】shell之cut用法|剪切列或域|提取列或域 提取列的用awk命令更好用 提取域的可以参考cut: https://blog.youkuaiyun.com/appke846/article/details/80367395 内容: 提取ID域,用冒号做分割符: 阅读详情

cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。

(1)其语法格式为:
cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]

使用说明
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

主要参数
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f  :与-d一起使用,指定显示哪个区域。

-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。

(2)cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢?

cut命令主要是接受三个定位方法:

第一,字节(bytes),用选项-b

第二,字符(characters),用选项-c

第三,域(fields),用选项-f

(3)以“字节”定位

举个例子吧,当你执行ps命令时,会输出类似如下的内容:

[rocrocket@rocrocket programming]$ who
rocrocket :0           2009-01-08 11:07
rocrocket pts/0        2009-01-08 11:23 (:0.0)
rocrocket pts/1        2009-01-08 14:15 (:0.0)
如果我们想提取每一行的第3个字节,就这样:

[rocrocket@rocrocket programming]$ who|cut -b 3
c
c
c

(4) 如果“字节”定位中,我想提取第3,第4、第5和第8个字节,怎么办?

-b支持形如3-5的写法,而且多个定位之间用逗号隔开就成了。看看例子吧:

[rocrocket@rocrocket programming]$ who|cut -b 3-5,8
croe
croe
croe
但有一点要注意,cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦。这个例子就可以说明这个问题:

[rocrocket@rocrocket programming]$ who|cut -b 8,3-5
croe
croe
croe
(5) 还有哪些类似“3-5”这样的小技巧,列举一下吧!

[rocrocket@rocrocket programming]$ who
rocrocket :0           2009-01-08 11:07
rocrocket pts/0        2009-01-08 11:23 (:0.0)
rocrocket pts/1        2009-01-08 14:15 (:0.0)
[rocrocket@rocrocket programming]$ who|cut -b -3
roc
roc
roc
[rocrocket@rocrocket programming]$ who|cut -b 3-
crocket :0           2009-01-08 11:07
crocket pts/0        2009-01-08 11:23 (:0.0)
crocket pts/1        2009-01-08 14:15 (:0.0)
想必你也看到了,-3表示从第一个字节到第三个字节,而3-表示从第三个字节到行尾。如果你细心,你可以看到这两种情况下,都包括了第三个字节“c”。
如果我执行who|cut -b -3,3-,你觉得会如何呢?答案是输出整行,不会出现连续两个重叠的c的。看:

[rocrocket@rocrocket programming]$ who|cut -b -3,3-
rocrocket :0           2009-01-08 11:07
rocrocket pts/0        2009-01-08 11:23 (:0.0)
rocrocket pts/1        2009-01-08 14:15 (:0.0)
(6)给个以字符为定位标志的最简单的例子吧!

下面例子你似曾相识,提取第3,第4,第5和第8个字符:

[rocrocket@rocrocket programming]$ who|cut -c 3-5,8
croe
croe
croe
不过,看着怎么和-b没有什么区别啊?莫非-b和-c作用一样? 其实不然,看似相同,只是因为这个例子举的不好,who输出的都是单字节字符,所以用-b和-c没有区别,如果你提取中文,区别就看出来了,来,看看中文提取的情况:

[rocrocket@rocrocket programming]$ cat cut_ch.txt
星期一
星期二
星期三
星期四
[rocrocket@rocrocket programming]$ cut -b 3 cut_ch.txt
�
�
�
�
[rocrocket@rocrocket programming]$ cut -c 3 cut_ch.txt
一
二
三
四
看到了吧,用-c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码。
既然提到了这个知识点,就再补充一句,如果你学有余力,就提高一下。
当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开。例子如下:

[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -b 2
�
�
�
�
[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -nb 2

[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -nb 1,2,3
星
星
星
星
(7)域是怎么回事呢?解释解释:)

为什么会有“域”的提取呢,因为刚才提到的-b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息则束手无策。这时候“域”就派上用场了。如果你观察过/etc/passwd文件,你会发现,它并不像who的输出信息那样具有固定格式,而是比较零散的排放。但是,冒号在这个文件的每一行中都起到了非常重要的作用,冒号用来隔开每一个项。

我们很幸运,cut命令提供了这样的提取方式,具体的说就是设置“间隔符”,再设置“提取第几个域”,就OK了!

以/etc/passwd的前五行内容为例:

[rocrocket@rocrocket programming]$ cat /etc/passwd|head -n 5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[rocrocket@rocrocket programming]$ cat /etc/passwd|head -n 5|cut -d : -f 1
root
bin
daemon
adm
lp
看到了吧,用-d来设置间隔符为冒号,然后用-f来设置我要取的是第一个域,再按回车,所有的用户名就都列出来了!呵呵 有成就感吧!
当然,在设定-f时,也可以使用例如3-5或者4-类似的格式:

[rocrocket@rocrocket programming]$ cat /etc/passwd|head -n 5|cut -d : -f 1,3-5
root:0:0:root
bin:1:1:bin
daemon:2:2:daemon
adm:3:4:adm
lp:4:7:lp
[rocrocket@rocrocket programming]$ cat /etc/passwd|head -n 5|cut -d : -f 1,3-5,7
root:0:0:root:/bin/bash
bin:1:1:bin:/sbin/nologin
daemon:2:2:daemon:/sbin/nologin
adm:3:4:adm:/sbin/nologin
lp:4:7:lp:/sbin/nologin
[rocrocket@rocrocket programming]$ cat /etc/passwd|head -n 5|cut -d : -f -2
root:x
bin:x
daemon:x
adm:x
lp:x
(8)如果遇到空格和制表符时,怎么分辨呢?我觉得有点乱,怎么办?

有时候制表符确实很难辨认,有一个方法可以看出一段空格到底是由若干个空格组成的还是由一个制表符组成的。

[rocrocket@rocrocket programming]$ cat tab_space.txt
this is tab finish.
this is several space      finish.
[rocrocket@rocrocket programming]$ sed -n l tab_space.txt
this is tab\tfinish.$
this is several space      finish.$
看到了吧,如果是制表符(TAB),那么会显示为\t符号,如果是空格,就会原样显示。
通过此方法即可以判断制表符和空格了。
注意,上面sed -n后面的字符是L的小写字母哦,不要看错。

(9)我应该在cut -d中用什么符号来设定制表符或空格呢?

其实cut的-d选项的默认间隔符就是制表符,所以当你就是要使用制表符的时候,完全就可以省略-d选项,而直接用-f来取域就可以了。

如果你设定一个空格为间隔符,那么就这样:

[rocrocket@rocrocket programming]$ cat tab_space.txt |cut -d ' ' -f 1
this
this
注意,两个单引号之间可确实要有一个空格哦,不能偷懒。
而且,你只能在-d后面设置一个空格,可不许设置多个空格,因为cut只允许间隔符是一个字符。

[rocrocket@rocrocket programming]$ cat tab_space.txt |cut -d ' ' -f 1
cut: the delimiter must be a single character
Try `cut --help' for more information.

(10)cut有哪些缺陷和不足?

猜出来了吧?对,就是在处理多空格时。
如果文件里面的某些域是由若干个空格来间隔的,那么用cut就有点麻烦了,因为cut只擅长处理“以一个字符间隔”的文本内容


shell脚本---常用命令cut linux cut 命令详解 阅读详情

相关推荐

Linux 字符串截取命令 cut

截取第 8 个字符8从第五个字符开始,截取后面的567890截取第8个字符前面的字符串12345678从第4字符开始,截取至第8个字符为止45678每一行操作,截取位置1-4的字符rootdaembin:sys:syncgameman:suchNo suchNo such。

1143

shell中的命令用法(cut)

一:截取命令cut cut:连接文件并打印到标准输出设备上 补充说明: cut命令 用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。 说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 >f3将把文件fl和f2的内容合并起来,然...

试试看吧。 1万+

如何导入su_利用GIS快速生成SU场地模型

01|前言:进入2021年了,希望大家也是一个新的开始。告诫自己多写文章多更新,多读点书多旅行。然而元旦由于出去玩了4天,积累了一些事情要处理,一直没有时间好好写点东西。今天给大家带来的分享主题叫“利用GIS快速生成SU场地模型”。相关的视频方法其实B站上也有,但我相信视频很多人都不会看,我自己也是。直接给大家上操作流程。主要的操作步骤是【获取场地的矢量shp文件】—【导入ArcScen...

weixin_33806859的博客 9813

linux之cut用法

cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。 (1)其语法格式为:cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file] 使用说明cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定 File 参数...

dengdiaoji0891的博客 3012

【WiFi软件开发】IOCTL和Netlink----用户空间和内核空间交互的两种方式

linux开发中通常会涉及用户空间和内核模块的交互。本文介绍了两种典型的用户空间和内核模块通信方式:ioctl和netlink

liuwe1ye的博客 2349

AI大模型实战——模型测评:如何评估大模型的表现

大模型评测体系解析:从数据集到基准测试 本文系统梳理了大模型评测的关键要素。在数据集方面,重点介绍了C-Eval等中文评估套件,强调数据质量需通过人工验证保证。评测维度涵盖自然语言理解、知识推理、代码生成等核心能力。基准测试作为标准化评估方法,Glue、SuperClue等平台提供了公平比较的依据。文章指出厂商自评榜单存在水分问题,建议关注第三方评测。同时解析了少样本和零样本两种prompt模式的应用场景差异。最后解释了"SOTA"这一术语在描述模型最优性能时的应用价值。整体呈现了大模型

小志的博客 897

扩展正则表达式

次数匹配对比 有些难 练习 1、显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法) [root@centos7 ~]#grep -i “^s” /proc/meminfo [root@centos7 ~]#grep “^[Ss].*” /proc/meminfo 2、显示/etc/passwd文件中不以/bin/bash结尾的行 [root@centos7 ~]#cat /...

weixin_34290352的博客 484

单片机毕业设计-基于STM32单片机的智能镜系统-仿真设计

可通过MQ-2监测当前烟雾浓度可通过温湿度传感器监测当前温湿度可通过光照强度传感器监测光照强度可通过蜂鸣器进行烟雾报警可通过语音识别模块进行反馈播报状态可通过按键设置阈值三个继电器控制灯、加湿、风扇标签:STM32单片机、OLED112864、DHT11、BH1750、继电器、SU-03T、MQ-2、蜂鸣器题目扩展:智能家居安防、智能大棚控制系统、智能环境检测系统项目编号:ZL-32-240604-FZ。

bsdog11的博客 968

总结:linux运维常用命令

linux系统中日常运维常用命令汇总一 一、yum 1、介绍 Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。 yum源:本地yum源是将yum用到的安装包.......

w2009211777的专栏 1万+

AOA(Angle of Arrival,到达角)定位算法及其误差分析的原理和MATLAB仿真_aoa定位算法

如图所示,有基站 S 1 ( x 1 , y 1 , z 1 ) , S 2 ( x 2 , y 2 , z 2 ) S_1(x_1,y_1,z_1),S_2(x_2,y_2,z_2) S1​(x1​,y1​,z1​),S2​(x2​,y2​,z2​),目标 T ( x , y , z ) T(x,y,z) T(x,y,z)。2+(z_1-z_2)^2} step1:两基站间的距离L=(x1−x2)2+(y1​−y2​)2+(z1​−z2​)2。

2401_87555613的博客 1483

贝叶斯核机回归估计混合物健康效应 【BKMR包】——实操篇

使用 ggplot2包绘制 h 的截面# 绘制总体风险摘要。

三分钟热度 5383

linux 备份文件命令_每日精选linux代码

用法:head 文件名 tar包的使用 作用:tar 可以为文件和目录创建档案。利用 tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar 最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,如软盘。利用 tar 命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的...

weixin_36421759的博客 1769

9、 量子支持向量机:从经典到量子的跨越

本文详细介绍了量子支持向量机(QSVM)的基本原理及其在PennyLane和Qiskit框架中的实现方法。从经典SVM的基础知识出发,逐步深入到量子领域的应用,包括如何定义量子核函数、与scikit-learn集成以及在模拟器和实际量子计算机上的训练和评估过程。最后通过表格和流程图总结了不同框架下的实现要点,为未来量子机器学习的研究提供了参考。

weixin_42433737的博客 184

cut 命令

参考:https://linux.cn/article-9895-1.html 转载于:https://www.cnblogs.com/liu-shijun/p/11315786.html

weixin_30877227的博客 103

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

每一个程序员需要了解的10个Linux命令

源自:http://www.shaoqun.com/a/109476.aspx作为一个程序员,在软件开发职业生涯中或多或少会用到Linux系统,并且可能会使用Linux命令来检索需要的信息。本文将为各位开发者分享10个有用的Linux命令,希望对你会有所帮助。650) this.width=650;" src="http://images.cnitblog.com/blog/684625/2015

秀才的专栏 2522

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

6种常用的Linux日志分析方法

关注+星标公众号,不错过精彩内容来源 |网络GREP命令GREP 是一个强大的文本搜索工具,用于在给定的输入文件中查找与一个或多个模式匹配的行。它支持正则表达式,使得搜索更加灵活和强大。例如,grep 'pattern' filename 会在 filename 中查找包含 pattern 的所有行。CUT命令CUT 命令用于从每个文件中的每一行中提取特定的部分,并将其写入标准输出。它通常用于从...

strongerHuang 302

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

GLIP视觉语言模型深度解析:从开放词汇检测到零样本目标检测实战

目标检测是计算机视觉的核心任务之一,但传统检测器受限于固定类别集合,难以应对动态变化的长尾场景。开放词汇检测通过自然语言提示实现了类别扩展,而零样本目标检测进一步摆脱了对标注数据的依赖。视觉语言模型将文本与图像在语义空间对齐,使模型能够理解任意描述并定位对应目标。GLIP作为微软提出的图文预训练框架,通过深度融合图像与文本特征,将检测任务转化为区域-短语对齐问题,在COCO和LVIS数据集上展现出接近有监督模型的性能。其动态提示融合机制与伪标签蒸馏策略,为工业质检、智能检索、辅助标注等场景提供了高效落地方案

weixin_33894640的博客 141

Linux桌面软件生态全指南:从办公开发到创意娱乐的精选替代方案

操作系统生态是衡量其可用性的关键指标,它决定了用户能否高效完成日常工作与娱乐。在开源领域,Linux凭借其模块化设计,通过发行版仓库、Flatpak、Snap等多样化软件分发机制,构建了庞大且活跃的软件生态。这一生态不仅为开发者提供了极致的编程环境,如原生支持的Docker、Kubernetes和各类IDE,更通过成熟的兼容层技术,极大地扩展了应用边界。如今,无论是日常办公、专业开发、创意设计还是影音娱乐,用户都能在Linux上找到功能强大甚至超越专有系统的替代软件。本文聚焦于**LibreOffice**

weixin_30621959的博客 347

软件测试面试常被问的shell命令,零基础1小时便可掌握

要想获得面试官的信任,提高自己核心竞争力,还需要懂得多几个进阶的shell命令,不需要太多,也不需要太难,花1小时的时间恶补一下也来得及

软件测试小dao 638

Linux Shell常用技巧

Linux Shell常用技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html 一. 特殊文件: /dev/null和/dev/tty 二. 简单的命令跟踪 三. 正则表达式基本语法描述 四. 使用cut命令选定字段 五. 计算行数、字数以及字符数 六. 提取开头或结尾数行 Lin...

regjtc 96

10个最常用Linux命令:gh_mirrors/li/linux-basics-for-hackers-notes新手入门必备清单

想成为Linux高手却不知从何开始?Linux基础对于黑客和安全爱好者来说是必备技能,而掌握**Linux命令**是进入这个领域的第一步。在开源项目gh_mirrors/li/linux-basics-for-hackers-notes中,我们整理了基于《Linux Basics for Hackers》一书的学习笔记,为你精选出10个最常用的Linux命令,帮助新手快速上手Linux操作系统。

gitblog_01170的博客 379

Linux shortcuts and commands

   

Dexplover的专栏 3319

Linux 练习 - 标准IO和管道

1、将 /etc/issue 文件中的内容转换为大写后保存至 /tmp/issue.out 文件中 [yinxd@centos7 ~]$ cat /etc/issue \S Kernel \r on an \m [yinxd@centos7 ~]$ cat /etc/issue | tr 'a-z' 'A-Z' > /tmp/issue.out [yinxd@centos7 ~]$ cat /tmp/issue.out \S KERNEL \R ON AN \M 2、将当前系统登录用户的信息转

东方隐 883

Linux Shell常用技巧(目录)

为了方便我们每个人的查阅,这里特别给出了前十二篇系列博客的目录以供大家参阅和查找。 Linux Shell常用技巧(一) http://blog.youkuaiyun.com/wusthongmin/article/details/19169755 一. 特殊文件: /dev/null和/dev/tty 二. 简单的命令跟踪 三. 正则表达式基本语法描述 四. 使用cut命令选定字段 五.

wusthongmin的专栏 680
上一篇: Server 2008 R2: “You must use the Role Management Tool to install or configure Microsoft .NET”
下一篇: Linux中find常见用法示例
gray13
博客等级 码龄18年 23粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值