如何使用awk从列/字段中提取子集?

时间:2013-11-10 10:47:56

标签: bash awk

我想知道如何使用awk从列/字段中提取子集?

这是输入文件test.txt:

aaa bbb ccc=0.7707;ddd=0.21

我希望能够从第3列中提取数字“0.21”,并将其输出到第1列和第2列:

aaa bbb 0.21

我尝试过并使用过以下代码但失败了:

awk 'BEGIN { OFS = "\t" } { $4 = /^ddd=(+\d)/ ; print $1,$2,$4 }' test.txt

请帮忙!

非常感谢, TP

3 个答案:

答案 0 :(得分:1)

您可以使用-F标记指定多个分隔符,或在FS块中设置BEGIN。例如:

echo "aaa bbb ccc=0.7707;ddd=0.21" | awk -F "[ =]" '{ print $1, $2, $NF }'

结果:

aaa bbb 0.21

答案 1 :(得分:0)

您可以使用gsub

awk 'BEGIN { OFS = "\t" } { gsub(/.*=/, "", $3); print $1,$2,$3 }' text.txt

对于您的输入,它会给出:

aaa bbb 0.21

答案 2 :(得分:0)

另一个awk

awk '{split($3,a,"=");print $1,$2,a[3]}'
aaa bbb 0.21