[linux] 常用命令及参数-2

sort

1 sort是把结果输出到标准输出,因此需要输出重定向将结果写入文件
2 sort seq.txt > file.txt
3 sort -u seq.txt   输出去重重复后的行
4 sort -r number.txt 逆向排序
5 sort -r number.txt -o file.txt -o具有输出重定向的作用
6 sort -n number.txt 将数字按照大小排序,而不是按照ASCII码排序
7 sort -n -k 3 -t : seq.txt   -t:指定分隔符;-k:指定分隔符分割的字段
8 sort a.txt b.txt | uniq -d 取交集
9 sort a.txt b.txt | uniq 取并集
10 sort a.txt b.txt b.txt | uniq -u 取差集(a-b)
11 sort b.txt a.txt a.txt | uniq -u 取差集(b-a)

grep

1 \w 代表字母数字下划线
2 \W 代表非字符
3 \b 单词分隔符   '\bX\b'
4 '[A-Z][a-z]' 一个大写字母加一个小写字母
5 'm..c'
6 '[0-9][0-9]' 两个数字
7 'se\+' +表示重复多次时,要加'\'
8 'se\?' 同上
9 '\(se\)*' 括号也需要加'\'
10 '[0-9]\{2,3\}' 重复2-3次,大括号要加'\'
11 +  ? * 表示不同程度的重复

sed

1 sed是行处理工具,每次处理一行的内容
2 通过正则选定文本——>sed进行处理
3 sed -n 'p' grep 打印输出
4 sed -n '10p' grep 打印第10行
5 sed -n '5,10p' grep   打印第5-10行
6 sed -n '5,10!p' grep  不打印第5-10行
7 sed -n '1~2p' grep first~step
8 sed '1,5a=========' grep 在1-5行之前增加===
9 sed '1,5i=========' grep 在1-5行之前插入===
10 sed '10c heldfada' grep 第10行替换成后面的文字 5,10c  5-10行整体替换
11 sed '40d' grep 删除第40行
12 sed '$a print hello \nprint yes' sed  在文章的结尾增加两行 $a \ 区分
13 sed '/^$/d' grep 删除空行
14 sed 's/false/true/' grep  替换 /g 全局替换
15 sed -n '{n;p}' grep 输出偶数行 n读入一行,p输出一行
16 sed -n '{p;n}' grep 输出奇数行
17 {} 可以输入多个命令;用分号隔开
18 s/W/W123/ 也可以写成s/W/&123/
19 \u 首字母大写 \l 首字母小写 \U \L
20
21 sed 's/(^[a-z]\+.*$)/\1/' grep 替换中使用\1捕获
22 sed 's/w1(w2)w3/\1/' grep 替换命令
23
24 sed '1r 123.txt' abc.txt  读入123.txt文件,输入到abc.txt文件的第一行后
25 sed 'w abc.txt' 123.txt 把123.txt文件写入abc.txt覆盖

awk

2 可以编程,处理灵活,功能强大,适合处理复杂文本
3 awk一次处理一行内容,可以对每行进行切片处理
4 awk '{print $1}' 输出收个单词  也可以对print的内容进行书写如print $1"\t"$2
5 awk -F ':' '{print $3}' /etc/passwd F:分隔符
6 awk -F ':' '{print NR NF}' /etc/passwd NR:行号; NF:列号
7 awk -F ':' '$1~/^m.*/{print $1}' /etc/passwd 第一个字段匹配正则表达式  !~ 不匹配
8 awk -F ':' '$3>100{print $1,$3}' /etc/passwd 也可以用逻辑判断来匹配
9 awk -F ':' 'BEGIN{print"Line name num"}{print NR,NF,$1}END{print"FILENAME"}' /etc/passwd  > a.txt
10 awk -F ':' 'BEGIN{count=0}$1!~/^$/{count++}END{print"count="count}' /etc/passwd
11 $0 代表整行

cut

1 cut处理文件的每一行,并输出至标准输出
2 -b:以字节为单位切割;-c:以字符为单位切割(切割中文时有区别);-d:指定分隔符,默认为\t;-n:指定不把一个中文字符分割;-f:域
3 cut -b 3-8 切割第3-8字节
4 cat /etc/passwd|head -n 5|cut -d : -f 1
5 cut -d '' -f 1 只能处理一个空格,若有多个空格则不能处理

paste

1 paste是将多个行数相同的文件按行合并
2 paste aa bb 将aa和bb按行合并
3 paste -d ':' aa bb 指定分隔符;默认分隔符为\t
4 ls |paste -d ' ' - - - - 指定每行的元素有4个
5 paste -s a.txt -s 将一个文件的多行数据一行显示

join

依照两个文件里共有的某一列,将相应的行拼接成一行
1 join a.txt b.txt 两个文件必须依照相同的规则进行排序
2 join -a1 a.txt b.txt 显示第一个文件的不匹配行;-a2显示第二个文件的不匹配行
3 join -1 2 -2 2 a.txt b.txt 以第一个文件第2列和第2个文件第2列作为匹配字段
4 join -o 1.2,2.2 a.txt b.txt 部分连接,选择第一个文件和第二个文件的第2部分进行连接

split

split a.fasta 默认按每个文件1000行进行分割
split -n a.fasta 按指定n行对文件进行分割,n是具体数字

猜你喜欢

转载自www.cnblogs.com/jessepeng/p/11361234.html