次のファイルがあります。
sample chr start end ref alt gene effect
AADA-01 chr1 12336579 12336579 C T VPS13D Silent
AADA-02 chr1 20009838 20009838 - CCA TMCO4 Missense
AADA-03 chr1 76397825 76397825 GTCA T ASB17 Missense
AADA-03 chr1 94548954 94548954 C A ABCA4 Missense
AADA-04 chr1 176762782 176762782 TCG C PAPPA2 Missense
AADA-04 chr1 183942764 183942764 - T COLGAL Missense
AADA-05 chr1 186076063 186076063 A TGC HMCN1 Silent
AADA-05 chr1 186076063 186076063 A T HM1 Silent
5番目と6番目の列には1文字だけを含むすべての行が必要です。
結果は次のようになります。
sample chr start end ref alt gene effect
AADA-01 chr1 12336579 12336579 C T VPS13D Silent
AADA-03 chr1 94548954 94548954 C A ABCA4 Missense
AADA-05 chr1 186076063 186076063 A T HM1 Silent
私はこれを使用しようとしています。
awk -F'\t' '$5' filename | awk -F'\t' '$6' filename | wc -l
私はこれが間違っていることを知っていますが、誰かが私を訂正できますか?
ベストアンサー1
awk 'NR==1{print; next}
$5 ~ /^[A-Z]$/ && $6 ~ /^[A-Z]$/' input.txt
説明する
NR==1{print; next}
これにより、無条件に最初の行(ヘッダー)が印刷され、次の行に移動します。
$5 ~ /^[A-Z]$/ && $6 ~ /^[A-Z]$/
これは条件式です。 5番目と6番目の引数の両方が大文字と一致する場合は、その行を印刷します(この場合、印刷コマンドは暗黙的であり、すべての条件のデフォルトコマンドです)。
$5
$6
各行の5番目と6番目の列を表します。
&&
論理演算子AND。
~
正規表現一致演算子です。左側のパラメータが右側の正規表現と一致する場合はtrueを返します。
/^[A-Z]$/
正規表現(regexp)です。文字「/」は正規表現の区切り文字、「^」は行(または文字列)の始まりを表し、「$」は終わりを表し、「[AZ]」はAからZまでのすべての大文字を表します。