linux命令之文本处理 linux文本操作

Linux下常用文本处理命令 Linux下常用文本处理命令大全
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列之间的所有字符. p=""/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精心制作的排版系统. 通常情况下, 通过编写脚本的手段来把所有的选项和参数封装起来一起传到标记语言中是一件很方便的事情.
Unix & Linux的文本处理工具 -- grep, sed & awk当大家看到标题时脑中闪过的大概是铺天盖地baidu, google出来的冗余的各类使用介绍 , 老生常谈希望能让大家对这三个文本工具有新的理解 。
grep不做过多的介绍,打印出匹配的行,着重点在于输出结果并不对文本本身做修改 。
有个关于grep的小故事,从sed和grep能追溯到最初的unix行编辑器ed而grep的命名代表 g(全局)/re(正则表达式)/p(打印)正是ed中全局打印行匹配的语法. grep自身的劣势在于无法实现多行匹配, 这时sed和awk相继出现弥补了grep的不足 。
在进入sed的相关讨论之前,先就sed跟awk之间进行简单的比较 。
可使用指定的脚本文件对相应文本进行编辑 。
sed -f 'script filename' or stdin
awk -f 'script filename' or stdin
默认全局匹配并且拥有自身的主输入循环 。
除去影响控制流的命令或语句(sed中: t,b; awk中continue,break等)默认对文本的每一读取的行依次执行相应的命令或语句 。
awk相较于文本编辑工具更像是一门语言,awk条件、循环、判断语句有显性的标识(if,while,for...);而sed只存在单一的判断逻辑(参考b label,t label) 。
取出upstream awk_test对应的配置块:
Solution1:
Solution2:
相较之下Solution 2不需要复杂的判断,只需通过寻址来匹配并打印相应的文本;Solution 1更适合于进行多行匹配并替换 。另一方面,Solution 1中sed通过创建多行空间模式并输出,而awk通过修改记录分隔符来实现多行匹配的不同 。
awk拥有系统变量(FS,RS,OFS,ORS...)、内置函数、数组数据结构、传参(-v var=value)、引用系统命令(通过system() getline() close()函数)等 。
awk除去主输入循环还存在BEGIN和END过程,用于某些在处理输入之前或者处理输入完成之后的操作 。
sed也有过人之处,如果对sed的工作模式进行深入了解,会发现有一个叫做保持空间(hold space)的东西,下图大体描述了sed的工作模式,并且阐述了模式空间(pattern space)跟保持空间(hold space)之间的联系 。模式空间跟保持空间中的内容可进行删除 , 交换等 。
sed的指令集都是单一的字母 , 并且有option可直接修改文件 。而awk可能需要指定内置变量的值,或是通过输出重定向保存为新的文件 。
综上所述:
grep适用于单行匹配打印的场景;
sed适用于多行模式的替换的场景;
awk适合更多的逻辑表达式并输出的场景 。
但三个命令都需要文本格式统一化的大前提,对于一个文本中的多种格式,可以先将同一种格式的内容整理到文件中,再将其他格式再分别整理到新的文件中 。
统一文本格式固然重要,能准确匹配意图的正则表达式也必不可少,这也是大家头疼的部分 。如若有机会,我会再跟大家介绍文本匹配中磨人的小妖精——正则表达式 。它在不同的命令中、语言中支持不同的标准,更易于与Unix-like系统的file globbing混淆,常常让人咬牙切齿,欲罢不能 。
Linux系统基础操作指令摘要linux命令之文本处理:Linux指令常用结构 linux命令之文本处理:Command [-option] [argument]
Command:即是要运行linux命令之文本处理的命令的本身linux命令之文本处理,说白了就是一个程序linux命令之文本处理;
Option:是选项(可?。∠钍强刂泼钤诵凶刺托形模啥喔鲅∠钜黄? ,如ls -al);
【linux命令之文本处理 linux文本操作】Argument:是参数(可?。?,是命令要操作对象如文件、路径、数据、目录等;
在指令的第一部分按[tab]键一下为[命令补全],两下为所有命令选择;
一、Linux系统操作指令
1、开关机
2、查看系统信息
3、查看系统性能
4、查看磁盘指标
二、Linux目录文件操作指令
1、目录文件
2、文件相关权限
3、文本处理
三、Linux用户权限操作指令
四、Linux压缩解压指令
五、Linux软件安装指令
linux之文本内容替换命令sedsed简介linux命令之文本处理:流编辑工具linux命令之文本处理 , 用来对文本进行过滤与替换操作 。
sed流程linux命令之文本处理:sed通过一次仅读取一行内容来对某些指令进行处理后输出 。
1、sed通过文件或管道读取文件内容,但sed默认并不直接修改源文件,而是将读入的内容复制到缓冲区中,称之为模式空间 。
2、所有的指令操作都是在模式空间找那个进行
3、sed根据相应的指令对模式空间中的内容进行处理并输出结果,默认输出至标准输出(即屏幕上) 。
sed基本语法格式:
用法:sed[选项]...{脚本指令}[输入文件]...
选项: -version 显示sed版本
-help :显示帮助文档
-n,-quiet,-silent静默输出,默认情况下,sed程序在所有的脚本指令执行完毕后,将自动打印模式空间中的内容 。
-e script允许多个脚本指令被执行
-f script-file从文件中读取脚本指令,对编写自动化脚本程序很实用
-i ,-in-place 该选项直接修改源文件
-l N 该选项指定l指令可以输出的行长度,l指令为输出非打印字符 。
-posix 禁用GNU sed扩展功能 。
-r 在脚本指令中使用扩展正则表达式 。
-s,-separate 默认情况下 , sed将把输入的多个文件名作为一个长的连续的输入流 。而GNU sed则允许把它们当作单独的文件 。
-u,-unbuffered 最低限度的缓存输入与输出
a,append表示追加指令linux命令之文本处理;
i,insert表示插入指令;
d,delete表示删除指令;
s,substitution表示替换指令 。
sed脚本指令的基本格式是:
[地址,即路径]命令(有些命令仅可以对一行操作,有些可以对多行操作),命令也可以用花括号进行组合,使命令序列可以作用于同一个地址 。
address{
command1
command2
command3
}
sed的基本工作方式是:
sed的替换命令s:
1、全局替换 : s/old/new/g,其中g为全局替换,用于替换所有出现的次数; /如果和正则匹配的内容冲突可以使用其linux命令之文本处理他符号,如 : s@old@new@g
2、标志位
为什么要有多行模式: 配置文件一般有单行出现,但也有使用json或XML格式的配置文件,为多行出现 。
多行模式处理命令N、D、P
Linux 命令sed (文档编辑)——想玩转linux就请一直看下去Linux 命令大全
Linux sed 命令是利用脚本来处理文本文件 。
sed 可依照脚本的指令来处理、编辑文本文件 。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等 。
linux:文本处理系列-1.行截取(自己)常用的文本文件的行处理命令
示例文件:test.vcf
1、head -n 10 test.vcf
head : 默认是提取文件的前10行linux命令之文本处理,-n 参数可以设定选择文件的前n行
2、tial -n 10 test.vcf
tail : 默认是提取文件的末尾10行linux命令之文本处理,-n 参数可以设定选择文件末尾的n行
3、sed -n '10,20p' test.vcf
sed -n : 随意选择需要查看的行
sed命令是一个面向行处理的编辑器,可以和正则表达式配合使用,附上较全面的sed命令使用教程 。
4、awk 截取行的指定长度字符串
less test.gz |awk '{if(NR%2==1){print}else{print substr($1,1,75)}}' | gzip -ctest.part.gz
说明:对test.gz文件指定行截取75bp,原来是150bp
5、对n行的第三列求和,求平均值
grep -v ‘#’ test.vcf |sed -n '20,35p' |awk -F '\t' '{sum =$3;n}END{print sum,sum/n}'
(linux 一行命令计算速度比Python快,简单计算喜欢用linux命令)
记得随时整理使用过的命令,没学过linux,靠着各种帖子,随时需要随时补给,有点懒 。
linux命令之文本处理的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux文本操作、linux命令之文本处理的信息别忘了在本站进行查找喔 。

    推荐阅读