CSV 파일에서 문제가 있는 행 뒤의 행 수를 계산하려고 합니다. grep -a #
일치하는 항목을 찾은 후 # 줄 수를 출력하는 구문을 사용할 수 있다는 것을 알고 있습니다 . 실제 행 수에만 관심이 있습니다. 숫자를 MAX_INT로 설정하고 이를 파일로 파이프한 후 추가 처리를 수행할 수 있다는 것을 깨달았습니다.
나는 카운트를 알려주는 간결한 한 줄의 글을 찾고 있습니다.
어떤 제안이 있으십니까?
답변1
{ grep -m1 match; grep -c ''; } <file
grep
이는 GNU 및 가능한 infile 에서 작동합니다 lseek()
. 첫 번째 항목은 grep
1개 패치에서 중지되고 -m
두 번째 항목은 -c
입력의 나머지 모든 라인을 계산합니다.
GNU 없이 grep
:
{ sed '/match/q'; grep -c ''; } <file
물론, grep
그 이상의 다른 옵션을 모두 사용할 수 있으며, 경기 도중에 멈출 필요가 전혀 없습니다.
답변2
이것은 한 가지 방법입니다.
$ cat foo
aaa
bbb
ccc
ddd
eee
fff
$ awk '/^ddd/{a=FNR}END{print FNR-a}' foo
2
$
답변3
또 다른 접근 방식 - dc
사용하기에는 약간 난해하지만 여기서는 잘 작동하는 것 같습니다.
sed -n '/problem/=;$=' prob.txt | dc -e '??r-p'
sed
prob.txt
"문제"와 마지막 줄을 검색 하고 =
명령을 사용하여 두 줄 모두의 줄 번호를 출력합니다.
dc
두 값을 스택에 읽어 들여 거꾸로 뒤집은 다음 차이를 빼고 인쇄합니다.
답변4
문제가 있는 행까지(및 포함) 모든 행을 삭제한 다음 나머지 행 수를 계산해야 합니다.
sed '1,/problem/d' data.txt | wc -l