拷贝:
1. 要直接cp软链就需要加-d参数
cp -d test2.txt test3.txt
查找
查找目录:find /(查找范围) -name '查找关键字' -type d
查找文件:find /(查找范围) -name 查找关键字 -print
统计:
查看文件夹下面文件数量:
ls | wc -l
统计某一列数值之和,示例为统计第5列之和
cat temp.txt | awk '{print $5}' | awk '{sum+=$1}END{print sum}’
统计某一行数值之和,示例为统计第1列之和
cat temp1.txt | sed -n '1p' | awk '{ for(i=1;i<=NF;i++) sum+=$i; print sum}'
遍历
1.
for i in `cat $FILENAME`
do
echo $i
done
2.
array=("a" "b" "c" "d")
for i in "${array[@]}"
do
echo "Processing ${i}"
done
3.
for i in `seq 1 10`;do echo $i; done
排序
sort -n -k 8 # -n按数字大小进行排序
# -k 8 对第8列数据进行排序
合并
1. 用特殊符号合并2列数据
cat test.txt | awk '{print $1 "_" $2}'
2. 文件并列合并
paste -d' ' test1.txt test2.txt > test3.txt
拆分
1.命令:split,例子:
2.以行数拆分 -l参数:
3.split –l 50 原始文件 拆分后文件名前缀
4.说明:以50行对文件进行拆分,最后一个文件的行数没有50行以实际行数进行分配,比如有一个名为 wlan_date.txt的文件,公有120行,进行拆分:
split -l 50 wlan_date.txt wlan
5.拆分后会生成 wlanaa wlanab wlanac 三个文件,wlanaa wlanab两个文件分别50行,wlanac文件剩下20行
6.以大小拆分 -b参数:split –b 50 原始文件 拆分后文件名前缀
以行号进行拆分:
使用sed进行,以下例子显示提取文件中的第5到10行并另存文件
sed -n "5, 10p" SNP.chr1.snp > test1.snp
or
cat SNP.chr1.snp | awk '{print $5, $10}' > test1.snp
截取
str=${I}
${str:0-9}
删除
删除文件中的指定行的内容:
cat -n 可以查找行号
sed -i 'pos, pos'd filename
查看
查看某一行的值
cat test.vcf | head -n 7| tail -n 1 #例:查看第7行
or:
cat -n test.snp | awk ‘$1==“7” {print}’ #查看第7行
使用cat grep tail 打印出下一行的内容
Example:
echo -e "${i} \t `cat test.txt | grep -A 1 '2.5%'| tail -n 1`”
Or
cat test.fasta | grep -A 1 "aaaaaa" | tail -n 1
引用
Shell变量二次引用
A=`samtools view ${pd}${ind} | awk '$3=="'${i}'" {print}' | wc -l`
bb=chr${i}
eval B=\${$bb}
C=`echo "scale=6;${X}/${chrX}" | bc`
D=`echo "scale=6;${A}/${B}" | bc`
Rate=`echo "scale=6;${C}/${D}" | bc`
echo ${ind} ${i} ${A} ${Rate}
qsub
一次性提交多个任务
在shell里输入以下示例内容:
for K in `cat test.pop | head -n 2`; do qsub -v K=$K qsub_test.sh; done
qsub_test.sh:
#!/bin/bash
#PBS -l nodes=5:ppn=8 #ppn=cpu numbers needed for per task
#PBS -q low
#PBS -d .
export i=$K
echo $i