选择两列值一致的行

时间:2015-11-04 13:18:32

标签: bash perl awk sed

如果我有以下内容:

1 5 a
2 5 a
3 5 a
4 5 a
5 5 a
6 5 a
1 3 b
2 3 b
3 3 b
4 3 b
5 3 b
6 3 b

我如何只选择两列具有相同值的行,即

5 5 a
3 3 b

在bash / awk / sed。

我知道如何使用awk选择具有特定值的行,但仅限于我指定值时。

4 个答案:

答案 0 :(得分:4)

请说:

$ awk '$1==$2' file
5 5 a
3 3 b

如您所见,当条件$1 == $2完成后,awk会自动打印该行。

答案 1 :(得分:4)

foo

答案 2 :(得分:2)

为了完整性:

的bash

while read first second rest; do
    [[ $first -eq $second ]] && echo "$first $second $rest"
done < fi

或者如果内容不仅仅是整数:

while read first second rest; do
    [[ $first == $second ]] && echo "$first $second $rest"
done < file

SED

sed -En '/^([^ ]+) \1 /p' file

答案 3 :(得分:0)

这可能适合你(GNU grep):

starts(3)