【发布时间】:2019-12-22 01:18:20
【问题描述】:
你好,我在这几个小时里一直在为此苦苦挣扎,试图从一开始就在这里找到一些解决方案,用例如替换列的空字段。不适用字符串
最初尝试跟随而不进一步获得一些预期的输出
awk -v OFS=' ' '{for (i=1;i<=NF;i++) {gsub(/^[[:space:]]+$/,"",$i); $i=($i==""?NA:$i)}; print}' file >> not worked
awk '{for(i=1;i<=NF;i++)if($i~/*$/)$i=NA}1' file | column -t >> not worked
awk 'NF==23{$0=$0"NA"}1' file
awk 'BEGIN{OFS=" "}{for(i=1;i<NF;i++){if($i==""){$i=l}else{l=$i}}print}' file
awk '{ for(i=1; i<=NF; i++) if($i ~ /^ *$/) $i = 0 }; 1' file
这是输入:
5 STAT in DOCK 3 BAY1 SHIP OK SHA OK SHB BAD SHC BAD SHD BAD SHF BAD SHG BAD SHI BAD SHJ
5 STAT in DOCK 3 BAY2 SHIP OK SHA OK SHB BAD SHC BAD SHD BAD SHF BAD SHG BAD SHI BAD SHJ
5 STAT in DOCK 5 CONT CARG OK SHI OK SHJ
5 STAT in DOCK 5 CONG CARG OK SHF OK SHG
11 STAT in DOCK 8 BAY7 SHIP BAD SHA OK SHB BAD SHC BAD SHD BAD SHF BAD SHG BAD SHI BAD SHJ
11 STAT in DOCK 8 BAY9 SHIP OK SHA OK SHB BAD SHC BAD SHD BAD SHF BAD SHG BAD SHI BAD SHJ
7 STAT in DOCK 7 CONT7 SHIP BAD SHA OK SHB BAD SHC BAD SHD BAD SHF BAD SHG BAD SHI BAD SHJ
191 STAT in DOCK 20 FRI5 CARG OK SHA BAD SHB BAD SHF BAD SHG
1 STAT in DOCK 50 BAY4 CARGB BAD SHF OK SHG
这是目标 //预期输出1
5 STAT in DOCK 3 BAY1 SHIP OK SHA OK SHB BAD SHC BAD SHD BAD SHF BAD SHG BAD SHI BAD SHJ
5 STAT in DOCK 3 BAY2 SHIP OK SHA OK SHB BAD SHC BAD SHD BAD SHF BAD SHG BAD SHI BAD SHJ
5 STAT in DOCK 5 CONT CARG NA NA NA NA NA NA NA NA NA NA NA NA OK SHI OK SHJ
5 STAT in DOCK 5 CONG CARG NA NA NA NA NA NA NA NA OK SHF OK SHG NA NA NA NA
11 STAT in DOCK 8 BAY7 SHIP BAD SHA OK SHB BAD SHC BAD SHD BAD SHF BAD SHG BAD SHI BAD SHJ
11 STAT in DOCK 8 BAY9 SHIP OK SHA OK SHB BAD SHC BAD SHD BAD SHF BAD SHG BAD SHI BAD SHJ
7 STAT in DOCK 7 CONT7 SHIP BAD SHA OK SHB BAD SHC BAD SHD BAD SHF BAD SHG BAD SHI BAD SHJ
191 STAT in DOCK 20 FRI5 CARG OK SHA BAD SHB NA NA NA NA BAD SHF BAD SHG NA NA NA NA
1 STAT in DOCK 50 BAY4 CARGB NA NA NA NA BAD NA NA NA BAD SHF OK SHG NA NA NA NA
-- 删除了预期的输出 nr2,因为它令人困惑
【问题讨论】:
-
最后一行
GRB组中的BAD来自哪里? -
如果是拼写错误,那么应该可以:
awk 'BEGIN{a[0]="SHA";a[1]="SHC";a[2]="SHF";a[3]="SHI"}NF<23{f=9;for(f=9,i=0;i<4;++i){if($f!=a[i]){$(f-1)="NA NA NA NA "$(f-1);$0=$0}f+=4}}1' file -
hello @oguzismail BAD 与给定列中的 OK 相反,它是系统的结果,例如 GRB 只是由 SHC 和 SHD 组成的组,例如 SHC 的 BAD 或 OK 值甚至对于 SHD ,这些组不是强制性的,它只是唯一的想法,如何将它们分组以获得更好的概览,如预期格式 nr.2
-
我明白了,我在问你预期输出中第 9 行第 12 列的“BAD”是从哪里来的?
-
@oguzismail 啊它的错字
标签: string sorting awk replace multiple-columns