私の入力は次のとおりです。
pak_c35079_g1_i1|m.14890 Pfam
pak_c20797_g1_i1|m.3458 ProDom
pak_c20797_g1_i1|m.3458 Pfam
pak_c28265_g1_i3|m.9595 TIGRFAM
pak_c28265_g1_i3|m.9595 Pfam
.
.
.
私は次の出力が欲しい:
pak_c35079_g1_i1|m.14890 Pfam
pak_c28265_g1_i3|m.9595 TIGRFAM
pak_c28265_g1_i3|m.9595 Pfam
つまり、次の行(列A)で値が繰り返されると、両方の行が削除されます。
答え1
あなたはこれを行うことができますawk
:
awk 'BEGIN {last=""; last_line=""} { if (last == $1) {} else {print last_line} last=$1; last_line = $0}' < file_to_proceed
私は専門家ではありませんawk
。最後の行に問題があるでしょう...
答え2
sed '$!N;/^\([^ ]* \).*\n\1/d;P;D' <in >out
それは処理されませんサム連続して同じ最初のフィールド - しかし、とにかくそれはあなたが要求するものではないようです。
あなたの入力例を見ると、私の出力は例の出力とは少し異なります。
pak_c35079_g1_i1|m.14890 Pfam
上記のコマンドは、sed
次の2行を印刷しません。
pak_c28265_g1_i3|m.9595 TIGRFAM
pak_c28265_g1_i3|m.9595 Pfam
...これを行うと、要求された内容と競合するように見えるので、その内容がサンプル出力に含まれているかどうか疑問に思います。