これは私のファイルの一部です(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"]
非常にエレガントではありませんが、作業が完了し、何も必要ありません。