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



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

这是输入文件测试.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

请帮忙!

非常感谢,卫生纸

您可以使用

-F标志或在BEGIN块中的设置FS指定多个分隔符。例如:

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

结果:

aaa bbb 0.21
您可以使用

gsub

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

对于您的输入,它将提供:

aaa bbb 0.21

另一个awk

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

最新更新