Linux下常用文本处理命令

Linux下面有很多经典的非常有用的命令,其中处理文本的命令就有很多。这些小工具经过了几十年时间的洗礼,现在已经变成了经典,已经变成了Linux下面的标准,其实它们一直是遵循着Linux的标准。下面就让我们一起看看这些经典的Linux文本处理命令。

一. sort

文件排序,通常用在管道中当过滤器来使用。这个命令可以依据指定的关键字或指定的字符位置,对文件行进行排序。使用-m选项,它将会合并预排序的输入文件。想了解这个命令的全部参数请参考这个命令的info页。

二. tsort

拓扑排序,读取以空格分隔的有序对,并且依靠输入模式进行排序。

三. uniq

这个过滤器将会删除一个已排序文件中的重复行。这个命令经常出现在sort命令的管道后边。

四. expand, unexpand

expand命令将会把每个tab转化为一个空格。这个命令经常用在管道中。

unexpand命令将会把每个空格转化为一个tab。效果与expand命令相反。

五. cut

一个从文件中提取特定域的工具。这个命令与awk中使用的print $N命令很相似,但是更受限。在脚本中使用cut命令会比使用awk命令来得容易一些。最重要的选项就是-d(字段定界符)和-f(域分隔符)选项。

六. paste

将多个文件, 以每个文件一列的形式合并到一个文件中,合并后文件中的每一列就是原来的一个文件。与cut结合使用,经常用于创建系统log文件。

七. join

这个命令与paste命令属于同类命令。但是它能够完成某些特殊的目地。这个强力工具能够以一种特殊的形式来合并两个文件,这种特殊的形式本质上就是一个关联数据库的简单版本。

join命令只能够操作两个文件。它可以将那些具有特定标记域(通常是一个数字标签)的行合并起来,并且将结果输出到stdout。被加入的文件应该事先根据标记域进行排序以便于能够正确的匹配。

八. head

把文件的头部内容打印到stdout上(默认为10行,可以自己修改)。这个命令有一些比较有趣的选项。

九. tail

将一个文件结尾部分的内容输出到stdout中(默认为10行)。通常用来跟踪一个系统logfile的修改情况,如果使用-f选项的话,这个命令将会继续显示添加到文件中的行。

十. wc

wc可以统计文件或I/O流中的"单词数量"。

十一. fold

将输入按照指定宽度进行折行。这里有一个非常有用的选项-s,这个选项可以使用空格进行断行(译者:事实上只有外文才需要使用空格断行,中文是不需要的)(请参考例子 12-23和例子 A-1)。

十二. fmt

一个简单的文件格式器。通常用在管道中,将一个比较长的文本行输出进行"折行"。

十三. col

这个命令用来滤除标准输入的反向换行符号。这个工具还可以将空白用等价的tab来替换。col工具最主要的应用还是从特定的文本处理工具中过滤输出,比如groff和tbl。(译注:主要用来将man页转化为文本。)

十四. column

列格式化工具。通过在合适的位置插入tab,这个过滤工具会将列类型的文本转化为"易于打印"的表格式进行输出。

十五. colrm

列删除过滤器。这个工具将会从文件中删除指定的列(列中的字符串)并且写到文件中,如果指定的列不存在,那么就回到stdout。colrm 2 4 <filename将会删除filename文件中每行的第2到第4列之间的所有字符。

Caution:如果这个文件包含tab和不可打印字符,那将会引起不可预期的行为。在这种情况下,应该通过管道的手段使用expand和unexpand来预处理colrm。

十六. nl

计算行号过滤器。nl filename将会把filename文件的所有内容都输出到stdout上,但是会在每个非空行的前面加上连续的行号。如果没有filename参数,那么就操作stdin。

nl命令的输出与cat -n非常相似,然而,默认情况下nl不会列出空行。

十七. pr

格式化打印过滤器。这个命令会将文件(或stdout)分页,将它们分成合适的小块以便于硬拷贝打印或者在屏幕上浏览。使用这个命令的不同的参数可以完成好多任务,比如对行和列的操作,加入行,设置页边,计算行号,添加页眉,合并文件等等。pr命令集合了许多命令的功能,比如nl, paste, fold, column, 和expand。

pr -o 5 --width=65 fileZZZ | more 这个命令对fileZZZ进行了比较好的分页,并且打印到屏幕上。文件的缩进被设置为5,总宽度设置为65。

一个非常有用的选项-d,强制隔行打印(与sed -G效果相同)。

十八. gettext

GNU gettext包是专门用来将程序的输出翻译或者本地化为不同国家语言的工具集。在最开始的时候仅仅支持C语言,现在已经支持了相当数量的其它程序语言和脚本语言。

想要查看gettext程序如何在shell脚本中使用,请参考info页。

十九. msgfmt

一个产生二进制消息目录的程序。这个命令主要用来本地化。

二十. iconv

一个可以将文件转化为不同编码格式(字符集)的工具。这个命令主要用来本地化。

二十一. recode

可以认为这个命令是上边iconv命令的专业版本。这个非常灵活的并可以把整个文件都转换为不同编码格式的工具并不是Linux标准安装的一部分。

二十二. TeX, gs

TeX和Postscript都是文本标记语言,用来对打印和格式化的视频显示进行预拷贝。

TeX是Donald Knuth精心制作的排版系统。通常情况下,通过编写脚本的手段来把所有的选项和参数封装起来一起传到标记语言中是一件很方便的事情。

Ghostscript (gs) 是一个 遵循GPL的Postscript解释器。

二十三. enscript

将纯文本文件转换为PostScript的工具,

比如, enscript filename.txt -p filename.ps 产生一个 PostScript 输出文件filename.ps。

二十四. groff, tbl, eqn

另一种文本标记和显示格式化语言是groff。这是一个对传统UNIX roff/troff显示和排版包的GNU增强版本,Man页使用的就是groff。

tbl表处理工具可以认为是groff的一部分,它的功能就是将表标记转化到groff命令中。

eqn等式处理工具也是groff的一部分, 它的功能是将等式标记转化到groff命令中。

二十五. lex, yacc

lex是用于模式匹配的词汇分析产生程序,在Linux系统上这个命令已经被flex取代了。

yacc工具基于一系列的语法规范,产生一个语法分析器。在Linux系统上这个命令已经被bison取代了。

二十六. tr

字符转换过滤器。

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

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

相关文章

payara 创建 集群_高可用性(HA),会话复制,多VM Payara群集

payara 创建 集群抽象 在研究如何创建高可用性&#xff08;HA&#xff09;时&#xff0c;我发现了会话复制&#xff0c;多机处理的Payara / GlassFish群集&#xff0c;无法在单个参考中找到所需的一切。 我认为这将是一个普遍的需求并且很容易找到。 不幸的是&#xff0c;我的假…

python3连接oracle数据库真操蛋_为64位Windows7的Python3安装MySQLdb

Install 64-bit MySQLdb for Python 3 on Windows 7为64位Windows7的Pyhton3安装MySQLdb原文在此Jesus Rollerblading Christ. It all started as a simple idea: I would install Django and start working on this web app idea I had and use it as a chance to learn more …

每个程序员都应该知道的8个Linux命令

每个程序员&#xff0c;在职业生涯的某个时刻&#xff0c;总会发现自己需要知道一些Linux方面的知识。我并不是说你应该成为一个Linux专家&#xff0c;我的意思是&#xff0c;当面对linux命令行任务时&#xff0c;你应该能很熟练的完成。事实上&#xff0c;学会了下面8个命令&a…

python判断字符串在元祖_Python基础(2)——字典、元祖、字符串方法、非空即真、文件...

目录&#xff1a;一、字典二、元祖三、字符串方法、切片四、非空即真&#xff0c;非0即真五、文件正文一、字典字典d {username:xiaohei,id:1,grand:天马座,addr:北京,age:29}1、增加d {username:xiaohei,id:1,grand:天马座,addr:北京,age:29}#增&#xff1a;2个方法d[money] …

java hotspot 是什么_什么是HotSpot

Java是解释语言&#xff0c;但并不意味着它一定被解释执行。早期的虚拟机确实一条一条指令解释执行&#xff0c;但人们发现这样效率太低&#xff0c;不满足各种要求&#xff0c;因此出现了许多其它虚拟机&#xff0c;如JIT的虚拟机。HotSpot也是类似一种虚拟机&#xff0c;自从…

积分和人民币比率_通过比率路由到旧版和现代应用程序–通过Spring Cloud的Netflix Zuul...

积分和人民币比率从应用程序的旧版本迁移到应用程序的现代化版本时&#xff0c;一个非常常见的要求是能够将用户缓慢迁移到新应用程序。 在本文中&#xff0c;我将介绍通过Spring Cloud使用对Netflix Zuul的支持编写的这种路由层。 在继续之前&#xff0c;我必须承认&#xff0…

Java集合类原理详解

文章目录1 集合框架1.1 集合框架概述1.1.1 容器简介1.1.1 容器的分类1.2 Collection1.2.1 常用方法1.2.2 迭代器1.3 List1.3.1 概述1.3.2 常用方法1.3.3 实现原理1.4 Map1.4.1 概述1.4.2 常用方法1.4.3 Comparable 接口1.4.4 实现原理1.4.5 覆写 hashCode()1.5 Set1.5.1 概述1.…

sql安装联机丛书提示发生网络错误_速达软件:安装问题解答

问题Q&A在安装MSDE数据库时&#xff0c;出现安装程序倒退的情况解决方案&#xff1a;这是以前装过SQL Server数据库或MSDE数据库,没有卸载干净.解决办法重装操作系统。安装MSDE数据库时&#xff0c;系统出现“读取文件C:\program files\Microsoft sql sever\mssql\data\msd…

java分布式系统开发_从微服务到分布式系统-Java开发人员生存指南

java分布式系统开发感觉像是对微服务的炒作正在慢慢地落到实处&#xff0c;并且我们的行业开始意识到&#xff0c;根据微服务背后的体系结构范式无法通过仅在现有组件之上公开一些HTTP接口来轻松创建一个系统。 。 我们似乎确实同意必须进行服务优化的基础架构&#xff0c;文化…

java 调整jvm_eclipse修改jvm参数调优方法(2种)

本文介绍了eclipse修改jvm参数调优方法(2种)&#xff0c;分享给大家&#xff0c;具体如下&#xff1a;一般在不对eclipse进行相关设置的时候&#xff0c;使用eclipse总是会觉得启动好慢&#xff0c;用起来好卡&#xff0c;其实只要对eclipse的相关参数进行一些配置&#xff0c;…

python对分组进行排序_如何按排序顺序将列表中的项目分组?

由于您希望对输出进行排序&#xff0c;所以可以根据第一个元素对原始列表进行排序>>> first lambda x: x[0]>>> one_sorted sorted(one, keyfirst)然后您可以根据第一个元素使用^{}对元素进行分组&#xff0c;如下所示^{pr2}$因为您想按升序给组分配数字&a…

链表数据结构原理图/内存结构图/内存图

单项链表内存结构图&#xff08;也叫原理图&#xff09; 单项链表内存结构图

java web源代码_检测Java Web应用程序而无需修改其源代码

java web源代码与其他系统进行交互时&#xff0c;大多数Java Web应用程序都使用标准Java接口。 诸如Web页面或REST服务器之类的基于HTTP的服务是使用接口javax.servlet.Servlet来实现的。 使用JDBC接口java.sql.Statement和java.sql.Connection实现数据库交互。 这些标准几乎是…

反射与泛型 java_Java的反射 和 泛型的一个问题

aluckdog模板方法在编译过程中类型擦除&#xff1a;update(T,UpdateOperations)退化成update(Object,UpdateOperations)&#xff1b;update(Query,UpdateOperations)退化成update(Query,UpdateOperations)&#xff1b;morphia的update方法不光是一个模板方法&#xff0c;还是一…

迭代器原理图

原理图&#xff1a; Iterator<String> it Collection.iterator();it 是集合Collection的视图&#xff0c;迭代器其实就是视图&#xff08;类似数据库的 view&#xff09;&#xff0c;可以理解为一张单列多行的表&#xff0c;如下图所示&#xff1a; 有人理解成单行多…

neo4j python 算法_图论与图学习(二):图算法

选自towardsdatascience作者&#xff1a;Mal Fabien机器之心编译参与&#xff1a;熊猫图(graph)近来正逐渐变成机器学习的一大核心领域&#xff0c;比如你可以通过预测潜在的连接来理解社交网络的结构、检测欺诈、理解汽车租赁服务的消费者行为或进行实时推荐。近日&#xff0c…

cobol和java_现代化历险:策略+将COBOL转换为Java的示例

cobol和java在Keyhole Software&#xff0c;我们在很大程度上是一家现代化公司。 我们有一些顾问&#xff0c;专门研究将旧的代码迁移到新的&#xff0c;翻新的残旧代码库&#xff0c;并为大多数已经被供应商锁定的企业设计更光明的未来。 作为这些经验的一个有趣的副作用&…

c# mysql sdr_C#结合数据库实现验证识别ID卡内容的方法

本文所述实例为C#结合数据库&#xff0c;来验证所识别的ID卡内容&#xff0c;通过本实例代码&#xff0c;用户可以轻松实现对ID卡会员信息的验证。该实例代码可实现读取数据库&#xff0c;进而逐步实现数据库连接&#xff0c;数据库读取&#xff0c;ID卡读取&#xff0c;ID卡信…

递归算法 流程图_什么是算法?如何学习算法?算法入门的学习路径

什么是算法&#xff1f;有一个很著名的公式 “程序数据结构算法”。曾经跟朋友吃饭的时候我问他什么是算法&#xff0c;他说算法嘛&#xff0c;就是一套方法&#xff0c;需要的时候拿过来&#xff0c;套用就可以&#xff0c;我吐槽他&#xff0c;他说的是小学数学题的算法&…

java webmethod 参数_java详解Spring接收web请求参数的方式

本篇文章给大家带来的内容是java详解Spring接收web请求参数的方式 。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你们有所帮助。1 查询参数请求格式&#xff1a;url?参数1值1&参数2值2...同时适用于GET和POST方式spring处理查询参数的方法又…