条件付きで行を保持

条件付きで行を保持

これは私のファイルの一部です(10000行)。

N N N N N N N N N N N
N N N N N N N N N N N
N N N N R N N N N N N
N N N N N N N N N N N
N N N N N N N N N N N
N N N N N N N N N N N
N N N N N N N N N N N
A N N N N N N N N N N
N N N N N N N N N N N
N N N N N N N N G N N

Nすべての遺伝子型を含む系統を削除し、N以外の遺伝子型が1つ以上ある系統のみを維持したいと思います。これが私が望む結果です:

N N N N R N N N N N N
A N N N N N N N N N N
N N N N N N N N G N N

どうすればいいですか?

ベストアンサー1

-v オプションで revert grep を簡単に使用できます。これはあなたの例で書式設定されたテキストでのみ機能しますが、あなたのニーズには十分かもしれません。

$ grep -v "N N N N N N N N N N N" yourFile.txt

Nとは異なる遺伝子型を持つ系統に対する要求として、以下を含むスクリプトを生成できます。

#!/bin/sh
while read i
do
        n=`echo $i | tr " " "\n" | uniq -c | grep "N" | awk '{print $1}'`
        if [ "$n" == "10" ]
        then
                echo $i
        fi
done < "$1"

次に、スクリプトに実行権限を付与します。

$ chmod +x myScript.sh

その後実行

$ ./myScript.sh myFile.txt

次いで、ライン内の所望のNの量を修正することができる。

if["$n"=="10"]

非常にエレガントではありませんが、作業が完了し、何も必要ありません。

おすすめ記事