SQL 명령이있는 파일이로드되어 있는데 파일에서 모든 데이터베이스 테이블 이름을 추출해야합니다. grep 및 sed를 사용하여 파일을 구문 분석하고 텍스트 파일의 고유 테이블 이름 .. 한 줄에 하나?grep 및 sed 명령
이름 이름 모두 "db_"로 시작하는 것이 편리합니다!
grep과 sed를 함께 사용하여 테이블 이름을 추출하는 가장 좋은 방법은 무엇입니까?
SQL 명령이있는 파일이로드되어 있는데 파일에서 모든 데이터베이스 테이블 이름을 추출해야합니다. grep 및 sed를 사용하여 파일을 구문 분석하고 텍스트 파일의 고유 테이블 이름 .. 한 줄에 하나?grep 및 sed 명령
이름 이름 모두 "db_"로 시작하는 것이 편리합니다!
grep과 sed를 함께 사용하여 테이블 이름을 추출하는 가장 좋은 방법은 무엇입니까?
이렇게하면 테이블 이름이 포함 된 행을 검색합니다. ,
grep "\<db_[a-zA-Z0-9_]*" *.sql | sed 's/.*\(\<db_[a-zA-Z0-9_]*\).*/\1/'
을 그 실행의 일단 : 적절한 검색이 정리되면,
grep "\<db_[a-zA-Z0-9_]*" *.sql
테이블 이름과 라인에서 다른 모든 문자를 제거 :이의 출력은 신속하게보다 선택 검색이 필요한 경우 발표 할 예정이다 정렬에 추가하고 제거 중복 : 당신은 그냥 grep을 필요
(same last pipe expression) | sort | uniq
+1. 같은 줄에 여러 테이블 이름을 잠재적으로 잡으려면 tr :'grep .. * .sql | tr '' '\ n'| grep .. | sed'. 첫 번째 grep은'tr'에 대한 부담을 줄이기위한 것이고 두 번째 grep은 비 db_ 부분을 필터링하는 것입니다. – orip
또는 AWK
awk '{for(i=1;i<=NF;i++)if($i~/^db_[a-zA-Z0-9]+/){print $i} }' file
당신은 SQL 파일이 어떻게 생겼는지의 예를 게시 할 수 있습니까? –
sed/grep에서 얻을 수있는 거의 모든 대답은 대부분 당신의 가정에 들어갈 것입니다. 나는. 'db_'를 검색하는 것으로 시작하면, 그것이 실제로 얼마나 정확한지에 관계없이 얻을 것입니다. - 테이블 이름이 아니더라도 그런 식으로 시작하는 모든 문자열이 표시됩니다. 해당 패턴에 맞지 않는 문자열은 테이블을 참조한다고해도 표시되지 않습니다. 불행히도 정답은 (거의) 완전한 SQL 파서를 필요로합니다. –