专栏名称: 生信宝典
生物信息分析入门、晋级和经验分享。Linux、R、Python学习教程;高通量测序数据分析学习教程;生信软件安装教程。所有内容均为原创分享,致力于从基础学习到提高整个过程。
目录
相关文章推荐
生信宝典  ·  Science背靠背 | ... ·  昨天  
BioArt  ·  Nature | 乳腺组织清除突变的保护机制 ·  5 天前  
生物制品圈  ·  总缓解率达96%!驯鹿生物CAR-T疗法临床 ... ·  1 周前  
生物探索  ·  Cell | AI取代科研人员还有多远? ·  1 周前  
51好读  ›  专栏  ›  生信宝典

Linux学习-文件列太多,很难识别想要的信息在哪列;别焦急,看这里。

生信宝典  · 公众号  · 生物  · 2017-07-12 07:05

正文

经常会碰到列数特别多的文件,而屏幕又不足以放下这么多列;即便能放下,也不容易清晰的辨别出想提取的信息在第几列。


根据我们前面的学习,可以用一行命令或简单的写一个bash脚本来处理这个问题。


命令如下,命令的解释见 Linux学习-文件排序和FASTA文件操作


```bash

ct@ehbio:~$ vim test

ct@ehbio:~$ cat test

sample A B C D E F G H

ID1 1 2 3 4 5 6 7 8

ID2 1 2 3 4 5 6 7 8

ID3 1 2 3 4 5 6 7 8

ct@ehbio:~$ sed -n '1 s/\t/\n/g; 1p' test

sample

A

B

C

D

E

F

G

H

ct@ehbio:~$ sed -n '1 s/\t/\n/g; 1p' test | sed '=' | sed 'N;s/\n/\t/'

1 sample

2 A

3 B

4 C

5 D

6 E

7 F

8 G

9 H

```


完整脚本 `checkCol.sh` (后台回复 环境变量 查看如何像运行一个系统命令一样运行脚本 Linux学习-环境变量和可执行属性)。



```bash

#!/bin/bash


#set -x

set -e 

#set -u


usage()

{

cat <

${txtcyn}

Usage:


$0 options${txtrst}


${bldblu}Function${txtrst}:


This script is used to check the number of columns in given line and

will output the column number before each column item.


${txtbld}OPTIONS${txtrst}:

-f Data file (- represents STDIN)${bldred}[NECESSARY]${txtrst}

-l lineNumber[${txtred}Default 1 meaning the first line${txtrst}]

EOF

}


file=

lineno=1


while getopts "hf:l:" OPTION

do

case $OPTION in

h)

usage

exit 1

;;

f)

file=$OPTARG

;;

l)

lineno=$OPTARG

;;

?)

usage

exit 1

;;

esac

done


if [ -z $file ]; then

usage

exit 1

fi


if read -t 0; then

sed -n "${lineno} s/\t/\n/g; ${lineno}p" | \

sed '=' | sed 'N;s/\n/\t/'

else

sed -n "${lineno} s/\t/\n/g; ${lineno}p" ${file} | \

sed '=' | sed 'N;s/\n/\t/'

fi

```


脚本使用


```

ct@ehbio:~$ checkCol.sh -f test

1 sample

2 A

3 B

4 C

5 D

6 E

7 F

8 G

9 H

ct@ehbio:~$ checkCol.sh -f test -l 2

1 ID1

2 1

3 2

4 3

5 4

6 5

7 6

8 7

9 8

```