예를 들어, 모든 따옴표 ( "
) 문자 를 계산하려고합니다 . 우리는 파일이 따옴표보다 더 많은 따옴표를 가지고 있는지 걱정합니다.
예를 들면 다음과 같습니다.
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
답변
(숫자, 줄, 문자) tr
와 문자를 조합 (번역 또는 삭제) 할 수 있습니다 wc
.
tr -cd '"' < yourfile.cfg | wc -c
(의 -d
문자로 모든 캐릭터를 c
정복 "
한 다음 haracters를 세십시오 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”를 반환합니다.
답변
또 다른 단일 gawk
접근법 :
awk -v RS=\" 'END{print NR-1}'
답변
순수한 배쉬 :
var="$(< file.txt)"
tmp="${var//[^\"]/}"
echo ${#tmp}
답변
시험:
grep -0 '"' File -c
그러나 같은 줄에 두 개 이상의 문자가 있으면 작동하지 않습니다. 그들은 하나의 문자로 계산됩니다
답변
grep -oF ‘ “‘파일 | wc -l
-F는 고정 문자열을 나타냅니다