特定の文字を除いて、1行の文字数を数える方法は?

特定の文字を除いて、1行の文字数を数える方法は?

これはファイルの一部です

N W N N N N N N N N N
N C 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 G N N N N N N N N N
N C N N N C N N N N N
N C C N N N N N N N N

各行で「N」以外のすべての文字の総数を計算したいと思います。

私の願い出力

1
1
1
0
1
2
2

答え1

牛に似た一種の栄養アッ解決策:

awk -v FPAT='[^N[:space:]]' '{ print NF }' file
  • FPAT='[^N[:space:]]'- フィールド値のパターンを定義します(N文字とスペースを除くすべての文字)。

予想出力:

1
1
1
0
1
2
2

答え2

awk '{ gsub("[ N]",""); print length() }'

答え3

別のawk方法(返却-1空行の場合)。

awk -F'[^N ]' '$0=NF-1""' infile

または複雑な場合は返されます。-1空行に、0空(タブ/スペース)行にのみ適用されます。

awk -F'[^N \t]+' '$0=NF-1""' infile

答え4

選ぶアッ解決策:

awk '{ print gsub(/[^N[:space:]]/,"") }' file
  • gsub(...)- このgsub()関数は置換が行われた回数を返します。

出力:

1
1
1
0
1
2
2

関連情報