经常会碰到列数特别多的文件,而屏幕又不足以放下这么多列;即便能放下,也不容易清晰的辨别出想提取的信息在第几列。
根据我们前面的学习,可以用一行命令或简单的写一个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