linux命令行文本比较 linux 比较

Linux文本操作常用命令在Linux系统里常用于文本查看、操作、统计的命令:
通过多敲键盘,形成手感 肌肉记忆 , 熟练掌握这些命令,在以后生信分析中游刃有余 。以下是每个命令的详细的介绍(主要是跟着 生信技能树小郭老师 学习做的笔记)
接下来通过示例把10个命令的常用参数和用法展示出来:
参数的用法介绍:
注意事项:
用 cat 命令可以 查看文本 ,也可以 编辑文本,编辑文本要加符号,退出时 , 另起一行,按 control C 退出
zcat可以查看压缩的文本文件,tac逆向查看
结合管道符|使用
head / tail-n:查看文件的前 / 后 n 行 , 默认10行 (在R语言里head和tail默认是前6行) 。
less命令用得最多,more命令用得比较少
3.1less命令
less[参数]文件名
less命令重要的补充用法1 :
需要注意 退出 :只要使用less命令,按q键
less命令重要的补充用法2 :
参数用法:
less命令 不加参数 查看文件:
less命令加 -N参数 查看文件:显示行号
less命令加 -S参数 查看文件:单行显示,非常规整
对比:less和cat命令显示文本行号的用法:less -N , cat -n
3.2more命令
**more **逐页查看,按空格翻页,按回车换行 ,more命令一般很少用,熟练掌握less命令就好
查看压缩文件
wc 统计字符是也把换行符统计进去,但是别的命令不一定会把换行符算进去,。
常见参数:
切记:用less命令,按q退出
cut命令是按关键词来切的
常见参数:
排列前:
排列后:
解释:1和0比 , 1大;7和0比,7大…在sort字典排序里,100816比1737?。?00816排在前面 。
命令行查看一个表格结构时 , 因为制表符对齐的原因,出现一个错位的现象 。还有 字典排序 可能和我们平时的认知不一样,所以 加上-n参数 , 让数值有数学意义上的大小来排序。
uniq命令去重,只有两行出现重复,而且是相邻的两行,如果不相邻,即使出现两行一模一样,不会去重 。
uniq命令通常和sort命令搭配使用
换其它文件试试
总之,uniq命令使用时经常和sort一起
常见参数:
常见用法1:
pastefile1 file2
-s:按行合并 演示
常见用法2:paste--
常见参数:
要养成一个好习惯,原始数据不要轻易修改,修改的东西另外保存 , 文本保存用 (重定向)或是(追加)
1.用less查看example.gtf,然后管道符传递给wc
2.截取example.gtf第9列的内容
3.在第2步的基础上截取分号分割的第1列
4.在第3步的基础上排序、去重复并统计
5.在第4步的基础上,将空格替换成制表符
补充小知识 :
清屏 :controlL
查看历史(输入过的)命令 :history
linux命令行判断是否是纯文本文件1. 使用file命令linux命令行文本比较:file filenamelinux命令行文本比较,如果文件类型为“ASCII text”,则表示文件为纯文本文件 。
2. 使用head命令linux命令行文本比较:head -n 1 filename , 如果文件的第一行以字母或数字开头,则表示文件为纯文本文件 。
3. 使用od命令:od -c filename,如果文件以可打印字符开头,则表示文件为纯文本文件 。
4. 使用strings命令:strings filename,如果文件以可打印字符开头,则表示文件为纯文本文件 。
5. 使用grep命令:grep -v “^$” filename , 如果文件中包含可打印字符,则表示文件为纯文本文件 。
shell 命令 diff 的使用简介diff命令是Linux上比较重要的命令行工具,用于比较文本内容,并找到不相同的地方,diff在命令行中打印每一行的改动之处 。diff程序的输出被称为补?。?patch ),在Linux系统中还有一个patch程序 , 可以根据diff的输出,将文件内容更新为另一个文件内容,diff是版本控制工具不可或缺的一部分 。
diff命令能比较单个文件或者目录内容 。
如果指定比较的是文件,则只有当输入为文本文件时才有效 。以逐行的方式,比较文本文件的异同处 。
如果指定比较的是目录的的时候,diff命令会比较两个目录下名字相同的文本文件 。列出不同的二进制文件、公共子目录和只在一个目录出现的文件 。
diff的normal显示格式有三种提示:
上面的“3c3”和“8c8”表示log2014.log和log20143.log文件在 3 行和第 8 行内容有所不同; "11,12d10"表示第一个文件比第二个文件多了第 11 和 12 行 。
“|”表示前后 2 个文件内容有不同
“”表示后面文件比前面文件少了 1 行内容
“”表示后面文件比前面文件多了 1 行内容
这种方式在开头两行作了比较文件的说明 , 这里有三中特殊字符:
“+” 比较的文件的后者比前着多一行
“-” 比较的文件的后者比前着少一行
“!” 比较的文件两者有差别的行
它的第一部分,也是文件的基本信息:
--- log2014.log 2012-12-07 18:01:54.0000000000800
log2013.log 2012-12-07 16:36:26.0000000000800
"---"表示变动前的文件,""表示变动后的文件 。
第二部分,变动的位置用两个@作为起首和结束 。
@@ -1,121,10 @@
前面的"-1,12"分成三个部分:减号表示第一个文件(即log2014.log ),"1"表示第 1 行,"12"表示连续 12 行 。合在一起,就表示下面是第一个文件从第 1 行开始的连续 12 行 。同样的, " 1,10"表示变动后,成为第二个文件从第 1 行开始的连续 10 行 。
linux 中两个文档怎么对比内容是否一致可以用diff命令对比文档内容 。
[语法]:diff [参数] 文件1 文件2
[说明]: 本命令比较两个文本文件,将不同的行列出来
-b 将一串空格或TAB 转换成一个空格或TAB
-e 生成一个编辑角本 , 作为ex 或ed 的输入可将文件1 转换成文件2
[例子]:
diff file1file2
diff -b file1 file2
diff -e file1 file2edscript
diff 命令的常用参数
a 将所有文件当做文本文件来处理
b 忽略空格造成的不同
B 忽略空行造成的不同
q 只报告什么地方不同,不报告具体的不同信息
H 利用试探法加速对大文件的搜索
i 忽略大小写的变化
l 用pr对输出进行分页
r 在比较目录时比较所有的子目录
s 两个文件相同时才报告
v 在标准输出上输出版本信息并退出
实例:比较两个文件
代码如下:
[root@localhost test3]# diff log2014.log log2013.log
----------------------------------------------------------------------------
3c3
《 2014-03
---
》 2013-03
8c8
《 2013-07
---
》 2013-08
11,12d10
《 2013-11
《 2013-12
----------------------------------------------------------------------------
说明:上面的“3c3”和“8c8”表示log2014.log和log20143log文件在3行和第8行内容有所不同;“11,12d10”表示第一个文件比第二个文件多了第11和12行 。
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精心制作的排版系统. 通常情况下, 通过编写脚本的手段来把所有的选项和参数封装起来一起传到标记语言中是一件很方便的事情.
【linux命令行文本比较 linux 比较】linux命令行文本比较的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于linux 比较、linux命令行文本比较的信息别忘了在本站进行查找喔 。

    推荐阅读