常用的linux命令和逐行数据处理的例子

2022-08-12 02:39:01, 小迎子 上海欧易生物医学科技有限公司


Linux具有开源,处理性强等优点。

并且由于生物数据量较大,对数据处理性能要求更高,

所以生物信息分析软件大多都是针对linux系统进行开发的。

在日常的生物信息分析中,

我们几乎离不开linux平台,

今天我们给您介绍的小命令你可能常常使用,

能够帮助我们简单舒适的处理手头上庞大的生物信息数据。

一,常用的小命令

cd  打开文件目录

ls  显示文件

ls -al |grep ''^d'' 显示目录ls -al |grep ''^[^d]'' 在一个目录中查询不包含目录的所有文件

less 文件名 查看文件内容 按“q” 退出

cat 文件名 打开文件,可以多次打开几个文件

cat > 2.txt (用定向符创建文件,填写内容后,按ctrl+d保存内容)

grep -参数 文件名

-i 不区分大小写

-v 显示不符合条件的所有行

-c 显示符合条件的所有行数(符合条件的数量)

mkdir mywork  建立mywork这个目录

cp filename1 filename2 拷贝文件或目录

mv  源文件或目录 目标文件或目录 移动或重命名文件 cut  -f ‘1,5’文件 剪切文件的第1列和第5列

head -2 文件名 显示2行

head -100 文件名 | tail -10 >>a.log 提取文件第91-100行数据

wc -参数 文件名 统计文本大小,字符多少,行数

-c 统计文本字节数

-m 统计文本字符数

-l 统计文本有多少行

sort – 参数 文件名 对文件进行排序

-n 对文件按照数字排序

-r 反向排序

uniq -参数 文件名 对文件去重,去重前需要使用排序

split -参数 文件名 对文件进行切割

-100 (每100行切割成一个文件)

-C 25m/b/k (每25兆/字节/K 分割成一个文件)

| 管道符号,把上一条命令的结果传输给下一条命令

“>” 和“>> ” 重定向写入文件中

“>”相当于“w”清空并写入

“>>”相当于“a” 追加进文件

sed -i ‘s/a/b/g'' 文件 将文件中的a全部替换成b

awk -F ‘分割符''  Pattern {action} 文件名 使用指定的字符对每一行数据进行分段,默认是空格

-F后面跟的是分隔符

pattern 就是action执行的条件,这里可以使用正则表达式

(awk的功能太强大了,之前的公众号中也有提及过可以参考)

bash shell.sh 运行shell.sh脚本

dos2unix 文件

将Windows——>linux

(由于Windows和Linux下的换行符不同,所以我们在Windows下面下的代码需要使用dos2unix 转换成Linux下的换行符,否则运行shell脚本会报错)

unix2dos  文件 将 linux——>Windows

rm xx.txt 删除xx.txt文件

rm -rf 删除所有文件目录和目录下的所有文件,谨慎使用。

二,逐行处理

我们经常需要对文体文件进行逐行处理,那么在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理呢.给大家介绍以下三种方法:

1.通过read命令完成.最简便

read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中.

利用read读取文件时,每次调用read命令都会读取文件中的"一行"文本.

当文件没有可读的行时,read命令将以非零状态退出.

1 cat data.dat | while read line

2 do

3     echo "File:${line}"

4 done

5

6 while read line

7 do

8     echo "File:${line}"

9 done < data.dat

2.使用awk命令完成,最强大

利用awk读取文件中的每行数据,并且可以对每行数据做一些处理,还可以单独处理每行数据里的每列数据.

1 cat data.dat | awk ''{print $0}''

2 cat data.dat | awk ''for(i=2;i<NF;i++) {printf $i} printf "\\n"}''

第1行代码输出data.dat里的每行数据,第2代码输出每行中从第2列之后的数据.

如果是单纯的数据或文本文件的按行读取和显示的话,使用awk命令比较方便.

3.使用for var in file 命令完成

for var in file 表示变量var在file中循环取值.取值的分隔符由$IFS确定.

1 for line in $(cat data.dat)

2 do

3     echo "File:${line}"

4 done

5

6 for line in `cat data.dat`

7 do

8     echo "File:${line}"

9 done

如果输入文本每行中没有空格,则line在输入文本中按换行符分隔符循环取值.

如果输入文本中包括空格或制表符,则不是换行读取,line在输入文本中按空格分隔符或制表符或换行符特环取值.

可以通过把IFS设置为换行符来达到逐行读取的功能.

注意,IFS的默认值为:空白(包括:空格,制表符,换行符)

从生物信息的从业者的角度看,我们更关注数据分析,linux命令行操作系统是必须要掌握的技能,掌握了以上介绍的小命令和逐行处理的方法,对于数据处理是不是更得心应手了呢?还有多的处理技巧等着你去总结掌握!

#End#

当二维码出现的瞬间

我用大拇指紧紧的按住

果然停住了

小样儿 让你跳

识别了二维码

一个不小心就关注了“欧易生物”

也罢

内容还不错

那就每天来看看好了

分子生物和程序编码的婚礼

由一种叫做生物信息分析员的生命体所主持


  • 客服电话: 400-6699-117 转 1000
  • 京ICP备07018254号
  • 电信与信息服务业务经营许可证:京ICP证110310号
  • 京公网安备1101085018
  • 客服电话: 400-6699-117 转 1000
  • 京ICP备07018254号
  • 电信与信息服务业务经营许可证:京ICP证110310号
  • 京公网安备1101085018

Copyright ©2007-2024 ANTPEDIA, All Rights Reserved