Answers:
您可以将tr
(翻译或删除字符)与wc
(计数单词,行,字符)结合使用:
tr -cd '"' < yourfile.cfg | wc -c
(将的-d
所有字符c
删掉"
,然后计算字符数c
。)
grep方法:
grep -o '"' file | wc -l
16
-o
-仅输出匹配的子字符串或与单个gawk:
awk -v RS='' -v FPAT='"' '{print NF}' file
16
RS=''
-空的记录分隔符(而不是换行符)
FPAT='"'
-模式定义字段值
如果文件中的两行双引号的数量为奇数,则双引号的总和将为偶数,并且您将不会检测到不平衡的引号(这是我想实际上要执行的操作,但是我可能错了)。
该awk
脚本报告输入行中带有引号奇数的任何行:
awk -F'"' 'NF % 2 == 0 { printf("Line %d has odd quoting: %s\n", NR, $0) }'
我们将字段分隔符(FS
)设置为"
,-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”。
尝试:
grep -0 '"' File -c
但是,如果同一行中有两个或多个字符,则此操作将无效。它们将被计为一个字符
grep -oF'“'文件| wc -l
-F代表固定弦
-F
标志(这里不需要)。