SQLダンプから値を抽出して結合する

SQLダンプから値を抽出して結合する

INSERT非常に長い行を含む大規模なSQLダンプがいくつかあります。そのうちの1つには、次の形式の長いステートメントにデータベースのバージョンとサブバージョンが含まれています。

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

ファイルを解析し、バージョンとサブバージョンを次のように組み合わせた出力を取得したいと思いますv1.23-45。 1つのファイルが指定されている場合は個別に、ファイル名の前に複数行、複数のファイルが指定されている場合はファイルごとに1行、

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を使用して次のことを試しましたが、各ファイルの結果を2行に印刷します(単一のファイルの場合にのみ出力をbtにパイピングしてそれらを結合することができました)。

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

私はawkを試していません...

どんなアイデアがありますか?

ベストアンサー1

おすすめ記事