awk

使用awk 取文件第一列是以数字开头的数据:

1
$ awk '$1~/^[0-9]+/ {print $0}' infile > outfile

使用awk 取文件第一列包含chr或者包含sca

1
$ awk '$1~/chr|sca/ {print $0}' infile > outfile

使用awk 取文件第一列大于0.1且小于0.5的数据:

1
$ awk '$1>0.1 && $1<0.5 {print $0}' infile > outfile

使用awk 取文件第一列是chr

1
2
$ awk '$1~/^chr$/ {print $0}' infile > outfile
$ awk '$1=="chr" {print $0}' infile > outfile

使用awk 进行字符串捕获

1
2
3
4
$ cat file
aaaaBASE_DDDD123
$ awk '{match($0,/(BASE_[a-zA-Z0-9]+)/,a);print a[1]}' file
BASE_DDDD123

split 函数:

1
2
3
4
$ echo "12:00:00"|awk '{split($0,time,":" ); for (i in time) print time[i]}'

# split()是awk内置函数,还有length()
# $0 指代前面的字符,time为存放数据的数组名,":" 为分隔符

使用awk 进行格式化输出:

1
2
# %c 字符    %s 字符串    %d 十进制整数    %f 浮点数
$ printf ("%s\t%s\t%s",$1,$2,$3)