Unix AWK字符搜索

时间:2014-07-30 15:37:01

标签: bash unix awk scripting

如果我的文本文件如下所示:

chrY    14612243    1/1 8/8   0 12  DYS389I   4
chrY    14612243    1/1 8/8   0 12  DYS389I   4
chrY    14612243    1/1 8/8   0 29  DYS389B.2 4
chrY    14612243    1/1 8/8   0 29  DYS389B.2 4
chrY    7730432     1/1 -3/-3 0 20  DYS520    4
chrY    7730432     1/1 -3/-3 0 20  DYS520    4

我如何编写一个awk命令,可以帮助我提取第四列并在' /'中分割,得到我8 8或-3 -3

我试过

awk -F "/" '{print $3 " " $4}'

但它不断打印错误的列。

3 个答案:

答案 0 :(得分:5)

尝试以下awk命令,

$ awk '{split($4,a,"/"); print a[1],a[2]}' file
8 8
8 8
8 8
8 8
-3 -3
-3 -3

它使用分隔符/拆分第四列,并将其存储到数组中。 a[1]表示第一个拆分值,a[2]表示第二个值。

答案 1 :(得分:1)

另一种方法是使用space/作为字段分隔符:

awk -F '[ \t/]*' '{ print $5, $6 }' file

输出:

8 8
8 8
8 8
8 8
-3 -3
-3 -3

答案 2 :(得分:1)

另一种选择:

awk '{sub("/", " ", $4); print $4}' file