Linux 命令: cut 和 tr

1. 写在前面

本文主要介绍:Linux "cut "和 “tr” 命令行实用程序概述;

公众号: 滑翔的纸飞机

2. Linux 命令: cut

“cut” 命令是一种命令行工具,允许我们剪切指定文件或管道数据的部分内容,并将结果打印到标准输出。

root@dev:~# man cut
-------------------------------------------------------
NAMEcut - remove sections from each line of files
SYNOPSIScut OPTION... [FILE]...
... ...       
-b, --bytes=LISTselect only these bytes
-c, --characters=LISTselect only these characters
-d, --delimiter=DELIMuse DELIM instead of TAB for field delimiter
... ...           

下面是一个文本文件:让我们看看如何操作下面的文本文件,以根据需要打印输出。

test.txt:

Nov 15 00:13:08 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.10000000-0000-0000-0000-000000000000[1938]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:15 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.01000000-0000-0000-0000-000000000000[1936]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:15 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.06000000-0200-0000-0000-000000000000[1935]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:15 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.04000000-0200-0000-0000-000000000000[1939]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:41 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.05000000-0600-0000-0000-000000000000[1940]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:41 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.08000000-0100-0000-0000-000000000000[1941]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:41 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.0D000000-0200-0000-0000-000000000000[1917]): Service exited due to SIGKILL | sent by mds[98]
Nov 15 00:13:41 dev com.apple.xpc.launchd[1] (com.apple.mdworker.shared.0E000000-0400-0000-0000-000000000000[1937]): Service exited due to SIGKILL | sent by mds[98]

2.1 按字符范围打印

在一定字符范围内打印输出 :

范围:1 - 5

root@dev:~# cut -c 1-5 test.txt 
-------------------------------------------------------
Nov 1
Nov 1
Nov 1
Nov 1
Nov 1
Nov 1
Nov 1
Nov 1

范围:21 - 40

root@dev:~# cut -c 21-40 test.txt 
-------------------------------------------------------
com.apple.xpc.launch
com.apple.xpc.launch
com.apple.xpc.launch
com.apple.xpc.launch
com.apple.xpc.launch
com.apple.xpc.launch
com.apple.xpc.launch
com.apple.xpc.launch

范围:70 - end

root@dev:~# cut -c 76-  test.txt 
-------------------------------------------------------
00000-0000-0000-0000-000000000000[1938]): Service exited due to SIGKILL | sent by mds[98]
00000-0000-0000-0000-000000000000[1936]): Service exited due to SIGKILL | sent by mds[98]
00000-0200-0000-0000-000000000000[1935]): Service exited due to SIGKILL | sent by mds[98]
00000-0200-0000-0000-000000000000[1939]): Service exited due to SIGKILL | sent by mds[98]
00000-0600-0000-0000-000000000000[1940]): Service exited due to SIGKILL | sent by mds[98]
00000-0100-0000-0000-000000000000[1941]): Service exited due to SIGKILL | sent by mds[98]
00000-0200-0000-0000-000000000000[1917]): Service exited due to SIGKILL | sent by mds[98]
00000-0400-0000-0000-000000000000[1937]): Service exited due to SIGKILL | sent by mds[98]

2.2 按字段名打印

假设我们想根据字段从以下文件中提取数据。

test.txt:

NAME EMAIL PHONE ADDRESS
devid devid@text.com 0897663232 beijin,china
harry harry@text.com 0232323232 hangzhou,china
jane jane@text.com 0323213122 zhejiang,china

我们必须使用"-d = delimiter"选项(可以是一个字符,默认为 TAB)来分隔每个字段。然后,我们必须指定要打印的字段编号。

-d, --delimiter=DELIM   
-f, --fields=LIST >> cut -d ' ' -f1

在下面的演示中,我们使用空格(’ ')作为分隔符。

# 打印空格分割第1列
root@dev:~# cut -d ' ' -f1  test.txt 
-------------------------------------------------------
NAME
devid
harry
jane# 打印空格分割第2列
root@dev:~# cut -d ' ' -f2 test.txt 
-------------------------------------------------------
EMAIL
devid@text.com
harry@text.com
jane@text.com

打印多个字段:打印第1、3列

root@jpzhang-dev:~# cut -d ' ' -f1,3 test.txt 
-------------------------------------------------------
NAME PHONE
devid 0897663232
harry 0232323232
jane 0323213122

使用逗号 (, ) 作为分隔符:

root@dev:~# echo "jane,jane@dev,12345678,china" | cut -d ','  -f1
--------------------------------------------------------------------
janeroot@dev:~# echo "jane,jane@dev,12345678,china" | cut -d ','  -f2
--------------------------------------------------------------------
jane@devroot@dev:~# echo "jane,jane@dev,12345678,china" | cut -d ','  -f3
--------------------------------------------------------------------12345678

3. Linux 命令: tr

Linux tr 命令用于转换或删除文件中的字符。
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

语法

tr [-cdst][--help][--version][第一字符集][第二字符集]  
tr [OPTION]…SET1[SET2] 

具体参数:

>> man tr
--------------------------------------------------------------------
tr [OPTION]... SET1 [SET2]
# Options
-c, -C, --complementuse the complement of SET1
-d, --deletedelete characters in SET1, do not translate
-s, --squeeze-repeatsreplace each sequence of a repeated character that is listed in the last specified SET, with a single occurrence of that character
-t, --truncate-set1first truncate SET1 to length of SET2
...
...

参数说明:

⁃	-c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换  
⁃	-d, --delete:删除指令字符  
⁃	-s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符  
⁃	-t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等  
⁃	--help:显示程序用法信息  
⁃	--version:显示程序本身的版本信息  

字符集合范围:

⁃	\NNN 八进制值的字符 NNN (1 to 3 为八进制值的字符)
⁃	\\ 反斜杠
⁃	\a Ctrl-G 铃声
⁃	\b Ctrl-H 退格符
⁃	\f Ctrl-L 走行换页
⁃	\n Ctrl-J 新行
⁃	\r Ctrl-M 回车
⁃	\t Ctrl-I tab键
⁃	\v Ctrl-X 水平制表符
⁃	CHAR1-CHAR2 :字符范围从 CHAR1 到 CHAR2 的指定,范围的指定以 ASCII 码的次序为基础,只能由小到大,不能由大到小。
⁃	[CHAR*] :这是 SET2 专用的设定,功能是重复指定的字符到与 SET1 相同长度为止
⁃	[CHAR*REPEAT] :这也是 SET2 专用的设定,功能是重复指定的字符到设定的 REPEAT 次数为止(REPEAT 的数字采 8 进位制计算,以 0 为开始)
⁃	[:alnum:] :所有字母字符与数字
⁃	[:alpha:] :所有字母字符
⁃	[:blank:] :所有水平空格
⁃	[:cntrl:] :所有控制字符
⁃	[:digit:] :所有数字
⁃	[:graph:] :所有可打印的字符(不包含空格符)
⁃	[:lower:] :所有小写字母
⁃	[:print:] :所有可打印的字符(包含空格符)
⁃	[:punct:] :所有标点字符
⁃	[:space:] :所有水平与垂直空格符
⁃	[:upper:] :所有大写字母
⁃	[:xdigit:] :所有 16 进位制的数字
⁃	[=CHAR=] :所有符合指定的字符(等号里的 CHAR,代表你可自订的字符)

3.1 替换字符

替换字符:‘H’ > ‘h’

root@dev:~# echo "Hello World" | tr 'H' 'h'
--------------------------------------------------------------------
hello World

替换字符:‘Ho’ > ‘xx’ 即 ‘H’ 或 ‘o’ 替换为 ‘x’

root@dev:~# echo "Hello World" | tr 'Ho' 'xx'
--------------------------------------------------------------------
xellx Wxrld

3.2 删除字符

# 删除 'H' 或 'o'
root@dev:~# echo "Hello World" | tr -d 'Ho'  
--------------------------------------------------------------------
ell Wrld# 反选,除'Hd\n'其他删除
root@dev:~# echo "Hello World" | tr -cd 'Hd\n'
--------------------------------------------------------------------
Hd# 反选,除数字外其他删除
root@dev:~# echo "Hello World 12345 " | tr -cd [:digit:]
--------------------------------------------------------------------
12345# 反选,除字母外其他删除
root@dev:~# echo "Hello World 12345 " | tr -cd [:alpha:]
--------------------------------------------------------------------
HelloWorld

3.3 压缩字符

# 压缩指定重复字符
root@dev:~# echo "HHHHHHHHellooooo Woooorrrrrrrrrldddddddddddddddddd" | tr -s 'Hord' 
------------------------------------------------------------------------------------
Hello World
# 压缩重复字符,小写转换大写
root@dev:~# echo "Hello World" | tr -s [:lower:] [:upper:]
------------------------------------------------------------------------------------
HELO WORLD
感谢您花时间阅读文章
关注公众号不迷路

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/160619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSP内置对象

一、request对象 1、访问请求参数 2、在作用域中管理属性 3、获取Cookie 4、解决中文乱码 5、获取客户端信息 6、显示国际化信息 是一个javax.servlet.http.HttpServletRequest对象 request封装了用户浏览器提交的信息,因此可以调用相应的方法可以获取这些封…

优先经验回放(prioritized experience replay)

prioritized experience replay 思路 优先经验回放出自ICLR 2016的论文《prioritized experience replay》。 prioritized experience replay的作者们认为,按照一定的优先级来对经验回放池中的样本采样,相比于随机均匀的从经验回放池中采样的效率更高&…

UML建模图文详解教程——类图

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl本文参考资料:《UML面向对象分析、建模与设计(第2版)》吕云翔,赵天宇 著 类图概述 类图用来描述系统内各种实体的类型以及不同…

Unsupervised MVS论文笔记

Unsupervised MVS论文笔记 摘要1 引言2 相关工作3 实现方法 Tejas Khot and Shubham Agrawal and Shubham Tulsiani and Christoph Mertz and Simon Lucey and Martial Hebert. Tejas Khot and Shubham Agrawal and Shubham Tulsiani and Christoph Mertz and Simon Lucey and …

JAVA小游戏拼图

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 创建一个代码类 和一个运行类 代码如下: package heima; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import …

10、信息打点——APP小程序篇抓包封包XP框架反编译资产提取

APP信息搜集思路 外在——抓包封包——资产安全测试 抓包(Fiddle&茶杯&burp)封包(封包监听工具),提取资源信息 资产收集——资源提取——ICO、MAD、hash——FOFA等网络测绘进行资产搜集 外在——功能逻辑 内在…

国际版Amazon Lightsail的功能解析

Amazon Lightsail是一项易于使用的云服务,可为您提供部署应用程序或网站所需的一切,从而实现经济高效且易于理解的月度计划。它是部署简单的工作负载、网站或开始使用亚马逊云科技的理想选择。 作为 AWS 免费套餐的一部分,可以免费开始使用 Amazon Lightsail。注册…

【Python进阶】近200页md文档14大体系第4篇:Python进程使用详解(图文演示)

本文从14大模块展示了python高级用的应用。分别有Linux命令,多任务编程、网络编程、Http协议和静态Web编程、htmlcss、JavaScript、jQuery、MySql数据库的各种用法、python的闭包和装饰器、mini-web框架、正则表达式等相关文章的详细讲述。 Python全套笔记直接地址…

PostgreSQL10安装postgis插件

1.安装pgsql10 2.下载插件,以Windows为例,地址:Index of /postgis/windows/pg10/ 3.安装插件,直接安装,和pgsql的目录相同即可,一直下一步 4.安装之后,需要执行sql打开 CREATE EXTENSION po…

028 - STM32学习笔记 - ADC结构体学习(二)

028 - STM32学习笔记 - 结构体学习(二) 上节对ADC基础知识进行了学习,这节在了解一下ADC相关的结构体。 一、ADC初始化结构体 在标准库函数中基本上对于外设都有一个初始化结构体xx_InitTypeDef(其中xx为外设名,例如…

Redis设计与实现-数据结构(建设进度17%)

Redis数据结构 引言数据结构stringSDS数据结构原生string的不足 hash 本博客基于《Redis设计与实现》进行整理和补充,该书依赖于Redis 3.0版本,但是Redis6.0版本在一些底层实现上仍然没有明显的变动,因此本文将在该书的基础上,对于…

PostgreSQL基本操作

1.查询某个表的所在磁盘大小 select pg_size_pretty(pg_relation_size(grb_grid)); 2.插入point类型的记录 insert into tb_person ("name", "address", "location", "create_time", "area", "girls") values …

Java 两个线程交替打印1-100

线程题:交替打印1-100 这里演示两个线程,一个打印奇数,一个打印偶数 方式一:synchronized FixedThreadPool public class example {private static int count 1;private static final Object lock new Object();public stat…

WPF基础DataGrid控件

WPF DataGrid 是一个用于显示和编辑表格数据的强大控件。它提供了丰富的功能,包括排序、筛选、分组、编辑、选择等,使你能够以类似电子表格的方式呈现和操作数据。 DataGrid 的布局主要由以下部分组成: 列定义 (Columns): DataGrid 列定义了…

YOLO目标检测——卫星遥感多类别检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用:卫星遥感目标检测数据集说明:卫星遥感多类别检测数据集,真实场景的高质量图片数据,数据场景丰富,含网球场、棒球场、篮球场、田径场、储罐、车辆、桥、飞机、船等类别标签说明:使用lableimg标…

2023年【上海市安全员C证】考试及上海市安全员C证找解析

题库来源:安全生产模拟考试一点通公众号小程序 2023年上海市安全员C证考试为正在备考上海市安全员C证操作证的学员准备的理论考试专题,每个月更新的上海市安全员C证找解析祝您顺利通过上海市安全员C证考试。 1、【多选题】2017年9月颁发的《中共上海市委…

基于STM32的烟雾浓度检测报警仿真设计(仿真+程序+讲解视频)

这里写目录标题 📑1.主要功能📑2.仿真📑3. 程序📑4. 资料清单&下载链接📑[资料下载链接](https://docs.qq.com/doc/DS0VHTmxmUHBtVGVP) 基于STM32的烟雾浓度检测报警仿真设计(仿真程序讲解) 仿真图prot…

【数据结构】B : DS图应用--最短路径

B : DS图应用–最短路径 文章目录 B : DS图应用--最短路径DescriptionInputOutputSampleInput Output 解题思路:初始化主循环心得: AC代码 Description 给出一个图的邻接矩阵,再给出指定顶点v0,求顶点v0到其他顶点的最短路径 In…

SkyWalking配置报警推送到企业微信

1、先在企业微信群里创建一个机器人,复制webhook的地址: 2、找到SkyWalking部署位置的alarm-settings.yml文件 编辑,在最后面加上此段配置 !!!一定格式要对,不然一直报警报不出来按照网上指导…

JVM 堆外内存详解

Java 进程内存占用除了JVM 运行时数据区,还有直接内存(Direct Memory)区域及 JVM 程序自身也会占用内存 直接内存(Direct Memory)区域:直接内存通过使用Native堆外内存来存储数据,这意味着数据…