SQL 덤프에서 값 추출 및 결합

SQL 덤프에서 값 추출 및 결합

INSERT매우 긴 줄이 포함된 대규모 SQL 덤프가 여러 개 있습니다. 그 중 하나에는 다음 형식의 긴 문에 데이터베이스의 버전과 하위 버전이 포함되어 있습니다 .

INSERT INTO `table` VALUES (...'version','v1.23'...'subversion','45'...

파일을 구문 분석하고 버전과 하위 버전을 다음과 같이 결합한 출력을 얻고 싶습니다 v1.23-45. 하나의 파일이 제공되면 개별적으로, 파일 이름 앞에 여러 줄로, 여러 파일이 제공되면 파일당 한 줄로, 지금은,

file1: v1.23-45
file2: v6.78-91

sed를 사용하여 다음을 시도했지만 (1) 버전이 항상 Subversion보다 먼저 온다고 가정하고(반드시 무리한 것은 아니지만 우아하지는 않음) (2) 파일 이름을 인쇄하지 않습니다.

sed -ns "s/.*'version','\([^']*\)'.*'subversion','\([^']*\)'.*/\1-\2/p" file ...

pr -ts -2또한 grep을 사용하여 다음을 시도했지만 각 파일의 결과를 두 줄로 인쇄합니다( 단일 파일의 경우에만 출력을 bt로 파이핑하여 이를 결합 할 수 있었습니다 ).

grep -oP "'(sub)?version','\K[^']*" file ...

나는 awk를 시도하지 않았습니다 ...

어떤 아이디어가 있나요?

관련 정보