- 12.《Bioinformatics Data Skills》之
- 28.《Bioinformatics-Data-Skills》之
- 18.《Bioinformatics-Data-Skills》之
- 19.《Bioinformatics-Data-Skills》之
- 【shell笔记>生信|专项】生信数据处理技能手札(3):
- Bioinformatics Data Skills
- 17.《Bioinformatics-Data-Skills》之
- 25.《Bioinformatics-Data-Skills》之
- 25.《Bioinformatics-Data-Skills》之
- 23.《Bioinformatics-Data-Skills》之
命令替换(Command Substitution)指的是将一个行内表达式的运行结果作为另外一个程序的输入。以此增加脚本的自动化程度,并减少人工错误。举例说明:
例1:统计FASTA序列数目
文件内容:
head example.fasta
>seq0
FQTWEEFSRAAEKLYLADPMKVRVVLKYRHVDGNLCIKVTDDLVCLVYRTDQAQDVKKIEKF
>seq1
KYRTWEEFTRAAEKLYQADPMKVRVVLKYRHCDGNLCIKVTDDVVCLLYRTDQAQDVKKIEKFHSQLMRLME LKVTDNKECLKFKTDQAQEAKKMEKLNNIFFTLM
>seq2
EEYQTWEEFARAAEKLYLTDPMKVRVVLKYRHCDGNLCMKVTDDAVCLQYKTDQAQDVKKVEKLHGK
>seq3
MYQVWEEFSRAVEKLYLTDPMKVRVVLKYRHCDGNLCIKVTDNSVCLQYKTDQAQDVK
>seq4
EEFSRAVEKLYLTDPMKVRVVLKYRHCDGNLCIKVTDNSVVSYEMRLFGVQKDNFALEHSLL
grep -c "^>" example.fasta
# 11
echo "例子fasta文件里面一共有$(grep -c "^>" example.fasta)"条序列。
# 例子fasta文件里面一共有11条序列。
解释:
- fasta里面以">"开头代表一条连续的序列,
-
grep
的-c
参数代表返回匹配结果的行数 - 使用
$()
可以将表达式的运算结果嵌到字符串里面
例2:使用日期作为文件后缀
假设我们因为某种原因需要重新跑结果,但是又不想覆盖前一次的结果。除了对结果进行备份外,在结果后面加上日期也是一个好的选择。人工去加日期的话比较麻烦也可能犯错(尤其是刚过完年的时候),我们可以采用代码date +%F
生成日期,嵌在创建结果文件夹的命令中:
date +%F
# 2021-05-31
mkdir result-$(date +%F)
ls
# result-2021-05-31
解释:
-
date
参数+%F
可以生成yyyy-mm-dd
格式日期,这种格式歧义最小并且可以显示的时候会按照真实时间排序,推荐使用。
$ ls -l
drwxr-xr-x 2 vinceb staff 68 Feb 3 23:23 1999-07-01
drwxr-xr-x 2 vinceb staff 68 Feb 3 23:22 2000-12-19
drwxr-xr-x 2 vinceb staff 68 Feb 3 23:22 2011-02-03
drwxr-xr-x 2 vinceb staff 68 Feb 3 23:22 2012-02-13
drwxr-xr-x 2 vinceb staff 68 Feb 3 23:23 2012-05-26
drwxr-xr-x 2 vinceb staff 68 Feb 3 23:22 2012-05-27
drwxr-xr-x 2 vinceb staff 68 Feb 3 23:23 2012-07-04
drwxr-xr-x 2 vinceb staff 68 Feb 3 23:23 2012-07-05
PS:
可以将alias today="date +%F"
放到~/.bashrc
配置文件中,方便于简单快速地调用:
today
# 2021-05-31
不过值得注意的是,不要在工程里面使用alias
,会降低工程的可移植性。
网友评论