我想知道如何使用 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
您可以使用块中的-F标志或设置指定多个分隔符。例如:FSBEGIN
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