awk

1
awk options 'pattern {action}' file
  • options:是一些选项,用于控制 awk 的行为。
  • pattern:是用于匹配输入数据的模式。如果省略,则 awk 将对所有行进行操作。
  • **{action}**:是在匹配到模式的行上执行的动作。如果省略,则默认动作是打印整行。

options description

  • -F <分隔符> 或 –field-separator=<分隔符>: 指定输入字段的分隔符,默认是空格。使用这个选项可以指定不同于默认分隔符的字段分隔符。

  • -v <变量名>=<值>: 设置 awk 内部的变量值。可以使用该选项将外部值传递给 awk 脚本中的变量。

  • -f <脚本文件>: 指定一个包含 awk

  • -V 或 –version: 显示 awk 的版本信息。

  • -h 或 –help: 显示 awk 的帮助信息,包括选项和用法示例。

Examples

打印整行:

1
awk '{print}' file

打印特定列:

1
awk '{print $1, $2}' file

使用分隔符指定列:

1
awk -F',' '{print $1, $2}' file

打印行数:

1
awk '{print NR, $0}' file

打印行数满足条件的行:

1
awk '/pattern/ {print NR, $0}' file

计算列的总和:

1
awk '{sum += $1} END {print sum}' file

打印最大值:

1
awk 'max < $1 {max = $1} END {print max}' file

格式化输出:

1
awk '{printf "%-10s %-10s\n", $1, $2}' file

筛选出p值小于5×10⁻⁸的行,假设文件名是data.txt

读取文件data.txt,并筛选出第13列(即p.value列)小于5×10⁻⁸的行

1
awk '$13 < 5e-8' data.txt

NR==1 部分确保标题行保留,$13 < 5e-8 部分筛选p值小于5×10⁻⁸的行

1
awk 'NR==1 || $13 < 5e-8' data.txt

> 输出筛选出的行数

1
awk 'NR==1 || $13 < 5e-8' data.txt > significant_data.txt

wc -l 统计显著位点个数

1
wc -l significant_p_snps.txt

还可以用 -v 定义一个变量 threshold

1
awk -v threshold=0.05 '$13 <= threshold {print}' data.txt

使用 >> 追加信息,不覆盖之前的文件

1
2
awk -v threshold=0.05 '$10 <= threshold' data.txt | wc -l 
>> significant_data.txt

Refer to: