如果第一列中的值匹配而第二列中的值与bash中另一个文件中的值不匹配,则提取行

时间:2019-02-13 16:00:14

标签: bash

我有2个看起来像这样的文件

 61435320        rs10000085
 12984967        rs10000091
 32039123        rs10000150

这:

 61435320        rs12958
 12984967        rs10000091
 32039123        rs37892

我只想提取与第一个字段匹配但与第二个字段不匹配的那些行。

所以,我想要的输出看起来像(我只想要第一个字段):

61435320
32039123

我已经尝试了https://askubuntu.com/questions/879754/awk-comparing-2-columns-of-2-files-and-print-common-lines提供的解决方案,但不幸的是,它对我不起作用(我想这并不是我要找的东西)

非常感谢您:)

2 个答案:

答案 0 :(得分:1)

假设您的文件名为ab,则可以这样操作:

join a b | awk '{if ($2!=$3){print $1}}'

如果文件排序不正确,则连接可能会出现问题。您可以像这样对它们进行排序:

join <(sort a) <(sort b) | awk '{if ($2!=$3){print $1}}'

答案 1 :(得分:0)

仅适用于awk:

# circles (zIndex: 420) are below the lines (zIndex: 430)
leaflet()%>%
addTiles() %>%
    # move the center to Snedecor Hall
    setView(-93.65, 42.0285, zoom = 14) %>%
    addMapPane("ames_lines", zIndex = 430) %>% # shown below ames_circles
    addMapPane("ames_circles", zIndex = 420) %>% # shown above ames_lines
    # points above polygons
    addCircles(
        data = random_data, ~lng, ~lat, radius = ~radius, popup = ~circleId,
        options = pathOptions(pane = "ames_circles")
    ) %>%
    # lines in'ames_lines'pane
    addPolylines(
        data = random_data, ~lng, ~lat, color = "#F00", weight = 20,
        options = pathOptions(pane = "ames_lines")    
    )