我有文件:
结果.txt
Apple fruits 10 20 30
Car vehicle 40 50 60
Book study 70 80 90
假设这里第二列是一个特征,第三列是最小值,第四列是中位数,第五列是最大值。我还有另一个文件config.txt
其中包含每个功能的属性,即
配置.txt
fruits Max
vehicle Median
study Min
所以我想编写一个脚本,仅显示在中定义的功能的列号config.txt
file.
预期输出:
Apple fruits 30
Car vehicle 50
Book study 70
我正在关注这个链接https://stackoverflow.com/a/40206489/10220825 https://stackoverflow.com/a/40206489/10220825。这是我尝试过的:
awk 'FNR==NR{arr[$2];next} $1 in arr {var =$2;print var}' result.txt config.txt
我能够将属性(如最小值、最大值、中位数)保存在变量中,以获取定义在其中的相应特征result.txt
,但无法显示该变量的列。请建议我一种如何打印相应列的列的方法。
$ awk 'BEGIN {m["Min"]=3; m["Median"]=4; m["Max"]=5}
NR==FNR {a[$1]=$2; next}
{print $1,$2,$m[a[$2]]}' config result
Apple fruits 30
Car vehicle 50
Book study 70
您需要保留最小值/中值/最大值到相应列索引的映射,并通过配置文件查找需要打印的值。
add a[$2]
如果您想打印最大/最小/中值信息,请点击打印。
NR==FNR {a[$1]=$2; next}
is the awk
将 file1 加载到以第一个字段和第二个字段作为值索引的数组中的习惯用法,本质上是一个字典或查找表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)