たとえば、すべての引用符()文字を計算しようとします。"
ファイルに含める必要がある以上の引用符があるかどうか心配するだけです。
たとえば、
cluster-env,"manage_dirs_on_root","true"
cluster-env,"one_dir_per_partition","false"
cluster-env,"override_uid","true"
cluster-env,"recovery_enabled","false"
予想される結果:
16
答え1
次のように(単語、行、文字数の計算tr
)を結合(文字の翻訳または削除)できます。wc
tr -cd '"' < yourfile.cfg | wc -c
-d
c
補数のすべての文字を削除して"
からc
文字(バイト)を計算します。一部のバージョンでは、ASCII以外の文字数に適したフラグをwc
サポートできます。-m
--chars
答え2
grep方法:
grep -o '"' file | wc -l
16
-o
- 一致する部分文字列のみ出力
またはシングル愚かな:
awk -v RS='' -v FPAT='"' '{print NF}' file
16
RS=''
- 空のレコード区切り記号(新しい行の代わりに)FPAT='"'
- フィールド値のパターン定義
答え3
ファイルの2行に奇数個の二重引用符がある場合、二重引用符の合計は偶数になり、バランスのとれない引用符を検出しません(実際にはこれがこれであると思うが間違っている可能性があります)。の)。
このawk
スクリプトは、入力行に奇数の引用符がある行を報告します。
awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }'
フィールド区切り文字()をwithFS
に設定しました。これは、行に偶数のフィールドがある場合、奇数の引用符があることを意味します。は最新のレコードのフィールド数で、現在のレコードのシーケンス番号(「行番号」)です。"
-F'"'
NF
NR
次の入力が与えられた場合:
$ cat file
cluster-env,"manage_dirs_on_root","true"
cluster-env,"one_dir_per_partition","false"
cluster-env,override_uid","true"
cluster-env,recovery_enabled","false"
私達は得た
$ awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }' file
Line 3 has odd quoting: cluster-env,override_uid","true"
Line 4 has odd quoting: cluster-env,recovery_enabled","false"
それはまるで
$ grep -o '"' | wc -l
ファイルに対して「14」を返します。
答え4
もう一つのawk
方法:
awk '{ count+=gsub(/"/, "") } END{ print count+0 }'