awk – 提取与最后一列中的最小值对应的行
发布时间:2020-12-13 23:53:21 所属栏目:Linux 来源:网络整理
导读:我需要帮助从最后一列中具有最小编号的文件中提取所有行,即在这种情况下为7英寸. 示例文件如下: 文件1.txt的 VALID_PATH : [102,80,112,109,23,125,111] 7VALID_PATH : [102,81,37,56,111] 7VALID_PATH : [102,111] 8VALID_PATH : [102,111] 8VALID_PATH :
我需要帮助从最后一列中具有最小编号的文件中提取所有行,即在这种情况下为7英寸.
示例文件如下: 文件1.txt的 VALID_PATH : [102,80,112,109,23,125,111] 7 VALID_PATH : [102,81,37,56,111] 7 VALID_PATH : [102,111] 8 VALID_PATH : [102,111] 8 VALID_PATH : [102,110,111] 8 VALID_PATH : [102,127,6,111] 9 VALID_PATH : [102,88,111] 9 VALID_PATH : [102,111] 10 VALID_PATH : [102,111] 10 VALID_PATH : [102,111] 10 在这里,我想提取所有具有7的行,这是最后一列中的最小值(最小值),并通过仅提取[]中包含的值将输出保存到另一个文件File-2.txt中,如图所示下面. 文件2.txt 102,111 102,111 我可以使用awk从最后一列获得最小值为“7”,使用如下代码: awk 'BEGIN{getline;min=max=$NF} NF{ max=(max>$NF)?max:$NF min=(min>$NF)?$NF:min } END{print min,max}' File-1.txt 并使用awk代码仅打印方括号[]中的值,如下所示: awk 'NR > 1 {print $1}' RS='[' FS=']' File-1.txt 但是,我被困在分配从第一个awk脚本获得的最小值,即在这种情况下为7,以提取[]中包含的相应数字,如File-2.txt中所示. 任何帮助解决这个问题将不胜感激. 解决方法
@Asha:@try:
awk '{Q=$NF;gsub(/.*[|]/,"");$NF="";A[Q]=A[Q]?A[Q] ORS $0:$0;MIN=MIN<Q?(MIN?MIN:Q):Q} END{print A[MIN]}' Input_file 稍后也会添加说明. 编辑:以下是同样的描述. awk '{ Q=$NF; ##### Making last field of Input_file as NULL. gsub(/.*[|]/,""); ##### Using global substitution functionality of awk to remove everything till [ and then remove ] from the line as per your required output. $NF=""; ##### Nullifying the last column of each line as you don't need them in your output. A[Q]=A[Q]?A[Q] ORS $0:$0; ##### creating an array named A whose index is Q variable(whose value is already assigned previously to last column),creating array A with index Q and concatenating it's value in itself. MIN=MIN<Q?(MIN?MIN:Q):Q} ##### Creating a variable named MIN(to get the minimum last value of each line) and comparing it's value to each line's last field and keeping the minimum value in it as per requirement. END{print A[MIN]} ##### In end block of code printing the value of array A whose index is variable MIN to print all the lines whose index is variable named MIN. ' Input_file ##### Mentioning the Input_file here. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |