2つの列の数字を比較し、2つの列の行の同じ値がいくつかあるかを計算する必要があります。たとえば、
17 19
17 17
17 18
19 19
25 22
34 34
予想出力:
3
awk
各行は特定の遺伝子のため、並べ替えできません。技術的にはまだ授業で見たことがないので使用できません。これを行う方法はありますかgrep
?
答え1
grep
1つの方法は、拡張正規表現パターン(逆参照を使用)を使用して-E
最初の列の値を一致させ、2番目の列の値も同じ行をすべて印刷することです。
最初の部分は([^ ]+)
最初の列の値をキャプチャし、キャプチャされた\1
値を参照するため、最初の列でキャプチャされた値が2番目の列の値と同じ行に一致することを示します。-c
返された行数を印刷するために使用されます。
grep -cE '([^ ]+) \1' file
また、部分一致を防ぐには、別のフラグを追加し、行の-x
前後に文字(スペースを含む)がないことを確認してください。
答え2
awkを使う:
awk '$1==$2{count++} END {print count}' kk
3
$1==$2
フィールド1と2の一致count++
一致するものが見つかるとカウンタがインクリメントされます。print count
最終カウンタ値の印刷/