shell常用命令

Ctrl+a 回到命令行首位
Ctrl+e 回到命令行尾部
Ctrl+xx 在命令行首和光标之间移动
Ctrl+u 从光标处删除至命令行首
Ctrl+l 清屏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
awk '!arr[$2]++' test.txt    #根据第二列输出file.txt文件中的唯一条目

awk '!arr[$0]++' file.txt #可过滤掉重复的行

awk '{sum+=$1} END {print sum}' file.txt #将file.txt文件中第一列的值相加

awk '{x+=$2}END{print x/NR}' file.txt #计算第二列的平均值

awk -v OFS='\t' #设定输出分隔符

awk '{print NR,length($0);}' filename #打印行号和每行字符数

awk '{print NF}' filename #打印文件列数

sed -n '1~3p' filename #每3行打印一行(1:开始行,3:步长)

ls -d /usr/myfile/* #输出myfile文件夹下所有文件的绝对路径

cat 1.gz 2.gz 3.gz >all.gz #直接合并压缩文件

qstat -u USERNAME|grep 'qw'|cut -f1 -d ' '| xargs qdel #批量删除等待的任务
1
2
3
4
5
6
#大文件字符替换时,使用perl代替sed可以提高处理速度。
perl -p -i -e 's/ATCG/atcg/' test.txt #-i直接处理
perl -p -i -e 'tr/ATCGatcg/TAGCtacg/' test.txt
# 快速删除大文件中包含指定字符的行。
perl -p -i -e 's/.*test.*//' test.txt #正则匹配
perl -p -i -e 's/^\s$//' test.txt #删除空白行

mapfile 命令可以将文件中的文本按行读入到数组中。

1
2
3
4
echo {a..z} | tr " " "\n" >alpha.log    
mapfile myarr <alpha.log
echo ${myarr[@]}
a b c d e f g h i j k l m n o p q r s t u v w x y z