Linux文件管理知识:文本处理

上篇文章详细介绍了Linux系统中查找文件的工具或者命令程序的相关操作内容介绍。那么,今天呢,这篇文章围绕Linux系统中文本处理来阐述。

众所周知,所有Linux操作系统都离不开一个核心原则,那就是它是由很多种文件组成的,那么,Linux系统的任何操作就离不开文本文件的处理。所以,它有很多命令工具用来处理文本的。在这篇文章中我们主要介绍下用于文本格式化输出及其它常用的命令工具。

常见的命令工具如下:

命令(工具)名称 描述

cat 用于连接文件并且打印到标准输出

sort 用于给文本行排序

uniq 用于报告或者省略重复行

cut 用于从每行中删除文本区域

paste 用于合并文件文本行

join 用于基于某个共享字段来联合两个文件的文本行

comm 用于逐行比较两个有序的文件

diff 用于逐行比较文件

patch 用于给原始文件打补丁

tr 用于翻译或删除字符

sed 用于筛选和转换文本的流编辑器

aspell 用于交互式拼写检查器

接下来,我们先回顾下Linux系统文本处理工具。

Linux文本处理工具

说到Linux文本处理工具或者程序,我相信大家首先提到就是vim了。是的,没错!但是文本还可以用来做什么呢?这个值得大家思考!

在这里列举一些用途:

² 通过纯文本格式形式编写文档;

² 另一种文本文档格式就是网页,目前最常见的就是通过超文本标记语言HTML或可扩展的标记语言XML作为标记语言来实现的;

² 基于文本的电子邮件email;

² 纯文本格式格式化输出;

² 软件开发里的程序源码;.

cat-A命令程序

cat-A命令程序,可将文本非打印字符(比如说控制字符tab、空格、回车字符等)显示出来。

实例1:

第一步:创建测试文件或者实例

[root@linuxprobe ~]$ cat > test1.txt

The food is delicious.

[root@linuxprobe ~]$

备注:

创建测试文件test1.txt,输入cat命令指定了用于重定向输出的文件test1.txt,随后输入文本内容“ The food is delicious. ”,最后回车Enter 键;使用Ctrl+D组合键指示cat命令。

需要注意的是测试文件test1.txt文本内容的开头和末尾分别使用了一个tab 字符以及一些空格。

第二步:刚刚创建的测试文件test1.txt文本内容通过cat-A命令显示出来:

[root@linuxprobe ~]$ cat -A test1.txt

^IThe food is delicious.. $

[root@linuxprobe ~]$

结论:

在输出的显示结果中我们可以分析:

文本中的tab 字符由ˆI 字符来显示出来。

文本末尾的空格由$ 字符来显示出来。

实例2:

第一步:创建测试文件或者实例

[root@linuxprobe ~]$ cat > test2.txt

It tastes delicious,

and makes one run at the mouth.

[root@linuxprobe ~]$

[root@linuxprobe ~]$ cat -ns test2.txt //-n:给文本行添加行号

-s:禁止输出多个空白行

1 It tastes delicious,

2

3 and makes one run at the mouth.

[root@linuxprobe ~]$

备注:

重新创建了一个新的测试文件test2.txt,其文本内容为It tastes delicious,

and makes one run at the mouth.并由两个空白行区分开。经过cat -ns命令程序执行处理(给文本行添加行号,并将禁止输出多个空白行输出)输出显示出来。

sort命令程序

sort 命令程序针对指定的文本内容或命令行中指定的一个或多个内容进行排序,并将排序结果标准输出显示出来。

sort 程序来处理标准输入实例:

[root@linuxprobe ~]$ sort test3.txt

2

3

1

[root@linuxprobe ~]$ ccat test3.txt

将test1.txt test2.txt test3.txt三个文本文件合并为一个有序的文件sorted _test_list.txt。

Sort命令程序的常见选项参数如下表:

选项 长选项 描述

-b --ignore-leading-blanks 默认情况下,对整行进行排序,从每行的第一个字符开始。这个选项导致sort 程序忽略每行开头的空格,从第一个非空白字符开始排序。

-f --ignore-case 让排序不区分大小写。

-n --numeric-sort 基于字符串的数值来排序。使用此选项允许根据数字值执行排序,而不是字母值。

-r --reverse 按相反顺序排序。结果按照降序排列,而不是升序。

-k --key=field1[,field2] 对从field1 到field2 之间的字符排序,而不是整个文本行。看下面的讨论。

-m --merge 把每个参数看作是一个预先排好序的文件。把多个文件合并成一个排好序的文件,而没有执行额外的排序。

-o --output=file 把排好序的输出结果发送到文件,而不是标准输出。

-t --field-separator=char 定义域分隔字符。默认情况下,域由空格或制表符分隔。

这篇文章主要介绍了cat及sort命令程序,它们是如何被用来执行文本处理操作的。 Linux系统知识博大精深,所以我在此强烈建议大家可以参考下《linux就该这么学》这本书,对于linux系统文本处理层面的介绍很详细!那么关于Linux系统中文本处理命令的操作及运用介绍先告一段落了,后期文章会一一补发

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

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

相关文章

汇编-EQU伪指令(数值替换)

EQU伪指令将一个符号名称与一个整数表达式或一个任意文本相关联, 它有3种格式 在第一种格式中, expression必须是一个有效的整数表达式。在第二种格式中, symbol是一个已存在的符号名称, 已经用或EQU定义过。在第三种格式中&…

温故知新:探究Android UI 绘制刷新流程

一、说明: 基于之前的了解知道ui的绘制最终会走到Android的ViewRootImpl中scheduleTraversals进行发送接收vsync信号绘制,在ViewRootImpl中还会进行主线程检测,也就是我们所谓子线程更新ui会抛出异常。 像我们常用的刷新ui,inval…

牛客竞赛网(爱吃素)

题目描述 牛妹是一个爱吃素的小女孩,所以很多素数都害怕被她吃掉。 一天,两个数字aaa和bbb为了防止被吃掉,决定和彼此相乘在一起,这样被吃掉的风险就会大大降低,但仍有一定的可能被吃掉,请你判断他们相乘后…

智能指针的理解

题目 为什么要定义智能指针?智能指针的原理RALL 智能指针的使用std::auto_ptrstd::unique_ptrstd::shared_ptr 为什么要定义智能指针? 之前定义指针申请内存空间使用后要进行delete进行资源释放,但是如果在资源释放之前就抛出异常&#xff0…

【Git】git的安装与使用教程

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Git》。🎯🎯 &#x1f449…

麒麟KYLINIOS软件仓库搭建03-软件仓库添加新版本的软件包

原文链接:麒麟KYLINIOS软件仓库搭建03-软件仓库添加新版本的软件包 hello,大家好啊,今天给大家带来麒麟桌面操作系统软件仓库搭建的文章03-软件仓库添加新版本的软件包,本篇文章主要给大家介绍了如何在麒麟桌面操作系统2203-x86版…

蓝桥杯每日一题2023.11.9

包子凑数 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 对于此题是一个简单DP的翻版问题,若能凑出当前的包子数,则凑出之前一定为dp[i - a[j]],若表示出的dp[i]不是0则说明是一定存在数可以被凑出的,由题意:若凑不出的…

ubuntu 设置最大带宽

背景 近日做实验,需要限制一些机子的带宽以达到模拟的效果。在网上搜索了一阵子,结合自己实操的经验,潦草写下这篇文章,供自己与有需要的人参考。 环境: Ubuntu 22.04.1 LTS 安装 wondershaper 和 speedtest-cli w…

非关系数据库

非关系数据库nosql 用来解决特定问题的数据库 特点: 1.没有关系模式schema-free/non-relational,与关系数据库不同 2.快速处理rapid process,数据放在内存中处理 3.distributed process分布式 4.big data 5.easy program 6.open-sour…

金融工作怎么做?低代码如何助力金融行业

10月30日至31日,中央金融工作会议在北京举行。金融是国民经济的“血脉”,是国家核心竞争力的重要组成部分。会议指出,党的十八大以来,在党中央集中统一领导下,金融系统有力支撑经济社会发展大局,坚决打好防…

uniapp获取设备mac地址

const net plus.android.importClass(java.net.NetworkInterface);const wlan0 net.getByName(wlan0);const macByte wlan0.getHardwareAddress();let macStr ;macByte.forEach(item > {// .toString(16)数字以十六进制值显示let temp ;if (item < 0) temp (256 i…

MarkDown基础及表格、KaTeX公式、矩阵、流程图、UML图、甘特图语法

概述 最多可设置6级标题 技巧 列表 有序列表 MD语法&#xff1a; 1. 你好 2. 我也好呈现效果&#xff1a; 你好我也好 无序列表 MD语法&#xff1a; - a - b * aa * bbaaabbb效果&#xff1a; ab aabb aaabbb 结论&#xff0c;支持三种方式&#xff1a;-、*、 T…

Vue集成海康websdk实现摄像头预览

选择以及下载相应的websdk&#xff1a; 从海康开放平台下载相应的sdk&#xff0c;web3.0不支持高版本浏览器&#xff0c;web3.2需要摄像头支持摄像头取流&#xff0c;web3.3支持高版本浏览器 我这选择的是3.3的。可以先测试下开发包是否可以成功访问&#xff0c;修改用ip、户名…

android开发布局知识

插件开发的视频笔记&#xff1a;

Aop天花板

拒绝废话,拒绝冗余文字,直接上代码和案例 1 导入依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 2 通知类配置解释(各个配置含义在代码中解释): packag…

算法进阶指南图论 通信线路

通信线路 思路&#xff1a;我们考虑需要升级的那条电缆的花费&#xff0c;若其花费为 w &#xff0c;那么从 1 到 n 的路径上&#xff0c;至多存在 k 条路径的价值大于 w &#xff0c;这具有一定的单调性&#xff0c;当花费 w 越大&#xff0c;我们路径上价值大于 w 的花费会越…

25期代码随想录算法训练营第十三天 | 栈与队列 part 2

目录 239. 滑动窗口最大值347.前 K 个高频元素方法一方法二 239. 滑动窗口最大值 链接 窗口 — 维持一个单调递增队列 为什么要使用队列&#xff1f; 在窗口移动的时候&#xff0c;方便把不属于窗口的最大值剔除。&#xff08;当窗口移动之后&#xff09; class Solution:…

React中JSX语法入门

JSX语法入门及代码 JSX是一种JavaScript的语法扩展&#xff0c;用于在React中描述用户界面的结构。它允许开发者使用类似HTML的语法来创建React元素&#xff0c;使得代码更具可读性和可维护性。JSX将HTML标签和JavaScript代码结合在一起&#xff0c;可以在其中使用JavaScript表…

【C++ Primer Plus学习记录】第4章编程练习

1.编写一个C程序&#xff0c;如下述输出示例所示的那样请求并显示信息&#xff1a; What is your first name? Betty Sue What is your last name? Yewe What letter grade do you deserve? B What is your age? 22 Name: Yewe,Betty Sue Grade: C Age: 22 注意&am…

读者自荐的 4 个 GitHub 项目

本期推荐的 4 个开源项目&#xff0c;为读者在开源项目 Awesome-GitHub-Repo 的评论区自推的, 如果你开源了不错的项目&#xff0c;想让大家看到&#xff0c;也可以去 Awesome-GitHub-Repo 进行投稿。 本期推荐开源项目目录&#xff1a; 1. DB-GPT 2. 定制中国传统节日头像 3. …