在awk

时间:2018-02-19 18:16:25

标签: awk

我有两个文件在一个文件中有整数而在另一个文件中有范围。有整数的那个:

integer.txt -->

A 68 V K 99187
A 98 J K 99107
A 78 V K 99188
1 89 V C 88373
2 99 C F 88999
3 100 C H 88744
X 101 E J 88779

ranges.txt --> 

A 28 78 YELLOW
1 33 89 BLUE
2 46 111 PURPLE
X 77 199 BLACK
X 101 299 GREEN
X 102 397 RED

我想要的是,如果first columninteger.txt的{​​{1}}相同,那么获取range.txt和{{之间的整数1}}(column 2nd)`ranges.txt。,即使它在边框重叠(=小于等于,大于等于)。

我试过的是:

3rd

我的期望是:

range

在预期的输出中,我不希望看到awk ' NR == FNR {intt[$1]=$2; max[$1]=$3; next} { for (color in intt) if (intt[color] < $2 && intt[color] == $2 && $2 < max[color] && $2 == max[color] ) { print $0, color break } } ' ,因为以A 28 78 YELLOW A 68 V K 99187 A 28 78 YELLOW A 78 V K 99188 1 33 89 BLUE 1 89 V C 88373 2 46 111 PURPLE 2 99 C F 88999 X 77 199 BLACK X 101 E J 88779 X 101 299 GREEN X 101 E J 88779 开头的任何行都不属于X 102 397 RED ..

我知道我的代码现在处于可怕状态,但我该如何解决?

1 个答案:

答案 0 :(得分:2)

使用GNU awk进行多维数组:

    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    HttpEntity<byte[]> entity = new HttpEntity<>(requestObject.toByteArray(), httpHeaders);

    ResponseEntity<String> response =
        _restTemplate.exchange("https://example.com/xyz", HttpMethod.POST, entity, String.class);