生信入门系列之Linux入门(二):基础命令(下)

uniq命令用于检查及删除文本文件中重复出现的行列。

uniq可检查文本文件中重复出现的行列。

语法

uniq[-cdu][-f][-s][-w][--help][--version][输入文件][输出文件]

参数

-c或--count 在每列旁边显示该行重复出现的次数。

-d或--repeated 仅显示重复出现的行列。

-f或--skip-fields= 忽略比较指定的栏位。

-s或--skip-chars= 忽略比较指定的字符。

-u或--unique 仅显示出一次的行列。

-w或--check-chars= 指定要比较的字符。

--help 显示帮助。

--version 显示版本信息。

[输入文件] 指定已排序好的文本文件。

[输出文件] 指定输出的文件。

实例

文件testfile中第2 行、第5 行、第9 行为相同的行,使用uniq 命令删除重复的行,可使用以下命令:

uniq testfile

testfile中的原有内容为:

$ cat testfile#原有内容

test30

test30

test30

Hello95

Hello95

Hello95

Hello95

Linux85

Linux85

使用uniq 命令删除重复的行后,有如下输出结果:

$ uniq testfile#删除重复行后的内容

test30

Hello95

Linux85

sort命令用于将文本文件内容加以排序。

sort可针对文本文件的内容,以行为单位来排序。

语法

sort[-bcdfimMnr][-o][-t][+-][--help][--verison][文件]

参数说明

-b 忽略每行前面开始出的空格字符。

-c 检查文件是否已经按照顺序排序。

-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。

-f 排序时,将小写字母视为大写字母。

-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。

-m 将几个排序好的文件进行合并。

-M 将前面3个字母依照月份的缩写进行排序。

-n 依照数值的大小排序。

-o 将排序后的结果存入指定的文件。

-r 以相反的顺序来排序。

-t 指定排序时所用的栏位分隔字符。

+- 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

--help 显示帮助。

--version 显示版本信息。

实例

在使用sort命令以默认的式对文件的行进行排序,使用的命令如下:

sort testfile

sort 命令将以默认的方式将文本文件的第一列以ASCII 码的次序排列,并将结果输出到标准输出。

使用 cat命令显示testfile文件可知其原有的排序如下:

$ cat testfile#testfile文件原有排序test30Hello95Linux85

使用sort命令重排后的结果如下:

$ sort testfile#重排结果Hello95Linux85test30

csplit命令用于分割文件。

将文件依照指定的范本样式予以切割后,分别保存成名称为xx00,xx01,xx02...的文件。若给予的文件名称为"-",则csplit指令会从标准输入设备读取数据。

语法

csplit[-kqsz][-b][-f][-n][--help][--version][文件][范本样式...]

参数

-b或--suffix-format= 预设的输出格式其文件名称为xx00,xx01...等,您可以通过改变来改变输出的文件名。

-f或--prefix= 预设的输出字首字符串其文件名为xx00,xx01...等,如果你指定输出字首字符串为"hello",则输出的文件名称会变成hello00,hello01...等。

-k或--keep-files 保留文件,就算发生错误或中断执行,也不能删除已经输出保存的文件。

-n或--digits= 预设的输出文件名位数其文件名称为xx00,xx01...等,如果你指定输出文件名位数为"3",则输出的文件名称会变成xx000,xx001...等。

-q或-s或--quiet或--silent 不显示指令执行过程。

-z或--elide-empty-files 删除长度为0 Byte文件。

--help 在线帮助。

--version 显示版本信息。

实例

将文本文件testfile以第 2 行为分界点切割成两份,使用如下命令:

csplit testfile2

testfile文件中的内容如下:

$ cat testfile#查看testfile 文件内容helloLinux!Linuxisa freeUnix-type operating system.ThisisaLinuxtestfile!Linux

使用csplit命令,输出结果如下:

$ csplit testfile213#xx00文件字符个数76#xx01文件字符个数

scp命令用于Linux之间复制文件和目录。

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。

语法

scp[-1246BCpqrv][-c cipher][-F ssh_config][-i identity_file][-l limit][-o ssh_option][-P port][-S program][[user@]host1:]file1[...][[user@]host2:]file2

简易写法:

scp[可选参数]file_source file_target

参数说明:

-1: 强制scp命令使用协议ssh1

-2: 强制scp命令使用协议ssh2

-4: 强制scp命令只使用IPv4寻址

-6: 强制scp命令只使用IPv6寻址

-B: 使用批处理模式(传输过程中不询问传输口令或短语)

-C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)

-p:保留原文件的修改时间,访问时间和访问权限。

-q: 不显示传输进度条。

-r: 递归复制整个目录。

-v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。

-c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。

-F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。

-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。

-l limit: 限定用户所能使用的带宽,以Kbit/s为单位。

-o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,

-P port:注意是大写的P, port是指定数据传输用到的端口号

-S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

实例

1、从本地复制到远程

命令格式:

scp local_file remote_username@remote_ip:remote_folder或scp local_file remote_username@remote_ip:remote_file或scp local_file remote_ip:remote_folder或scp local_file remote_ip:remote_file

第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;

第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;

实例:

split命令用于将一个文件分割成数个。

该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。

语法

split[--help][--version][-][-b][-C][-l][要切割的文件][输出文件名]

参数说明

- : 指定每多少行切成一个小文件

-b : 指定每多少字节切成一个小文件

--help : 在线帮助

--version : 显示版本信息

-C : 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性

[输出文件名] : 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号

实例

使用指令"split"将文件"README"每6行切割成一个文件,输入如下命令:

$ split-6README#将README文件每六行分割成一个文件

以上命令执行后,指令"split"会将原来的大文件"README"切割成多个以"x"开头的小文件。而在这些小文件中,每个文件都只有6行内容。

使用指令"ls"查看当前目录结构,如下所示:

$ ls#执行ls指令#获得当前目录结构

README xaa xad xag xab xae xah xac xaf xai

cmp命令用于比较两个文件是否有差异。

当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为"-",则cmp指令会从标准输入设备读取数据。

语法

cmp[-clsv][-i][--help][第一个文件][第二个文件]

参数

-c或--print-chars  除了标明差异处的十进制字码之外,一并显示该字符所对应字符。

-i或--ignore-initial=  指定一个数目。

-l或--verbose  标示出所有不一样的地方。

-s或--quiet或--silent  不显示错误信息。

-v或--version  显示版本信息。

--help  在线帮助。

实例

要确定两个文件是否相同,请输入:

cmp prog.o.bak prog.o

这比较 prog.o.bak 和 prog.o。如果文件相同,则不显示消息。如果文件不同,则显示第一个不同的位置;例如:

prog.o.bak prog.o differ:char4,line1

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180606G08SDH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券