我需要找到这个数字:第二列中的“ 3”,第一列中有“ 3”。
(这是一个示例。我还可能需要在第二列中找到“ 25”,而在第一列中找到“ 36”)。
第一列中的数字是唯一的。第一列上没有其他行以3开头。
此数据在文本文件中,我想使用bash(awk,sed,grep等)
我需要在第二列上找到一个数字,知道第一列的(唯一)数字。
在这种情况下,我需要在第二列(在本例中为第三行)的0下方grep 3:
108 330
132 0
3 3
26 350
36 25
43 20
93 10
101 3
102 3
103 1
这还不够好,因为grep应该仅应用于第一列元素,所以输出将只有一个数字:
cat foo.txt | grep -w '3' | awk '{print $2}'
尽管它是一个文本文件,但让我们想象一下它是一个MySQL表。所需的查询将是:
SELECT column2 WHERE column1='3'
在这种情况下(文本文件),我知道第一列的输入值(例如132或93或3),并且我需要在第二列中找到同一行的值(例如,分别为0、10、3)。
此致
答案 0 :(得分:1)
您可以通过将第一个匹配项分组并寻找重复来找到重复的模式。这适用于您的示例:
grep -wE '([^ ]+) +\1' infile
输出:
3 3
答案 1 :(得分:1)
假设您的意思是“查找第一行中确切包含特定字符串,第二列中包含特定字符串的行”;
awk -v val="3" '$1 == val && $2 ~ $1 { print $2 }' foo.txt
还请注意如何避免使用useless use of cat
.