分享几个linux的操作小技巧

01

排序

sort –t ‘:’ –n –r –k1 file

  • 表示冒号分割文件行(-t)

  • 取第1列(-k)

  • 按数字(非字符串排序-n)

  • 从大到小排序(默认从小到大,-r反之)


检索

  • 查看file中起始为hello的行

    grep ‘^hello’ file

  • 查看file中不含关键字hello的行

    grep –v hello file

  • 查看file中带数字的行

    grep [0-9] file

  • 在目录 '/my/ddirectory/' 及随后的目录中搜索hello

    grep hello -R /my/directory/*


查看

  • 查看文件行数

    wc –l file

  • 查看文件且显示每一行的行号

    cat –n file

  • 查看当前目录下所有fastq文件的总行数

    find . –name ‘*.fastq’ | xargs cat | wc –l

  • 按时间顺序排列该目录下文件(可用于整理文件生成的先后关系)

    ls –lt /my/directory/

  • 按文件大小从大到小排列该目录下文件:

    ls –Sl /my/directory/

  • 按文件大小从小到大排列该目录下文件:

    ls –Slr /direc/

  • less file查看file文件,文件内容会根据屏幕大小自动换行,不换行查看使用:

    less –S file

  • 查看file的前10行

    head –n 10 file

  • 查看file的最后10行

    tail –n 10 file

  • 查看第2行

    awk ‘NR==2 {print $_}’ file

  • 查看file的2到5行

    awk ‘NR>1 && NR<6 {print $0}’ file

  • 查看file的2到5行

    sed –n ‘2,5p’ file

取交并集

  • 取两个文件的交集(只留下同时存在于两个文件中的行)

    sort file1 file2 | uniq -d

  • 取两个文件的并集(重复的行只保留一行)

    sort file1 file2 | uniq


  • 删除交集,留下其他的行

    sort file1 file2 | uniq -u


合并

  • 把file2的行添加到file1文件行后面输出到file3(按行合并)

    cat file1 file2>file3

  • 把file2的列添加到file1的文件列后面输出到file4(按列合并)

    paste file1 file2>file4


02管道

  • 操作符是:”|”

  • 只能处理由前面一个指令传出的正确输出(standard output)信息

  • 对stdandard error信息没有直接处理能力

  • 传递给下一个命令,作为标准的输入standard input

  • 此命令方便我们对多种命令进行组合使用

cut –d ‘;’ –f1 file | sort | uniq –dc

分号分割file,并输出第一列给sort

sort对第一列进行排序

排序后利用uniq处理

-d显示重复行

–c对重复行计数


  03linux下运行perl命令

cat file |perl –ne ‘@arr=split/\t/,$_;if($arr[2]=~/^hello/){print $_}’

输出为file文件中tab分割下第三列起始含hello字符的所有行



2.jpg

这样简单的perl程序可直接在命令行中写并执行,无需生成脚本

cat file |perl –ne ‘chomp;@arr=split/\t/,$_;$hash{$arr[0]}++;END{foreach my $col1(keys %hash){print “$col1\t$hash{$col1}\n”}}’

tab键分割file文件,对其第一列进行计数并输出

END:表示遍历完文件,最后做的操作,BEGIN相反。

04

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。目前很多软件提供了docker镜像,下载即可运行。

05

man


语法:man <command>

功能:查询命令用法,用好了可以解决很多命令的问题

Linux环境下双击Tab键可查看当前账户可使用的命令,这些命令均可使用man查看其详细用法。

man查看命令时,主要显示的信息及说明:

1.jpg

进入man命令的功能后,

按空格键往下翻页,

按b键往上翻页,

按q键离开,

页面输入“/关键字” 可快速定位到要找的关键字。

06不解压文件而直接查看文件内容


zcat file.gz

zgrep * file.gz

07查找使用命令的历史记录


上下键翻找使用除外,

history |grep ‘helloWorld.py’ 在运行过的命令的历史记录中寻找包含helloWorld.py的行

ctrl+r 然后输入关键字,可以自动补齐匹配关键字的最近一条命令

08


while…;do…;done,for..;do…;done和if…;then…fi

find . –name “*.fa”|while read line;do head –n 1000 ${file} > ./test/${line} ;done

查找当前目录下的.fa文件,取所有.fa文件的前1000行输出到test目录下,文件名不变。

此例为while…;do…;done,for..;do…;done和if…;then…fi用法类似,可根据需求在命令行中进行组合使用。

09

Conda是一个开源包管理系统和环境管理系统,适用于多种编程语言及其包的管理。如果要安装的软件包与你正在使用的有冲突,如果你的环境配置好后还需要移植,可以选择使用conda。

分享