테이블 찾기, grep 및 생성

테이블 찾기, grep 및 생성

*.md나는 all at 을 찾고 ${PWD}grep 으로 시작하는 줄을 찾아 title:절대 파일 경로 -H와 패턴 일치의 줄 번호 와 함께 인쇄하려고 합니다. 그런 다음 결과를 -n구분 기호가 있는 테이블 -s에 출력하려고 합니다.:

find ${PWD} -type f -name "*.md" -exec bash -c 'i="$1"; grep -HnE "^title:" $1; | column -t -s :;' _ {} \;

이것은 grep까지 작동했지만 테이블을 만들 수 없습니다.

그리고 @steeldriver님이 제안해주신 수정사항에 따르면 결과마다 하나씩 실행이 되는거 같아서 find테이블이 생성되지 않는건가요?


샘플 출력

/Admin/Specification/Specification.md    2  title   Specification
/Admin/GraphicCard/index.md              2  title   "GraphicCard"

답변1

생각이 너무 많을 수도 있습니다. 결과를 표로 작성하는 대신 , 다작의 표 작성기를 통해 결과를 표로 작성해 보는 것은 grep어떨까요 ?awk

find . -type f -name \*.md -print0 | xargs -0 awk 'BEGIN { OFS="\t" } /^title:/ { print FILENAME, FNR, $0 }'

findmd관심 있는 모든 파일을 찾아 인수로 awk전달합니다 xargs. 그런 다음 awk일치하는 줄에 파일 이름( find전체 상대 경로를 통해 전달됨), 파일의 레코드 번호(즉, 줄 번호)를 표시합니다. 귀하의 기준 과 파일로 모두 OFS출력 필드 구분자에 정의된 탭으로 구분됩니다.

출력을 보다 정확하게 정렬하려면 다음을 수행할 수 있습니다.

/^title:/ { printf( "%35s %4d %s\n", FILENAME, FNR, $0 ) }

또한 원하지 않지만 find | xargs awk원하는 경우 find -exec에도 작동합니다.

find . -name \*.md -type f -exec awk '/expiry/ { printf( "%30s %4d %s\n", FILENAME, FNR, $0 ) }' "{}" +

관련 정보