パイプコマンドを使用して、次のコマンドを使用して、大きな本番DBをあるホストから別のホストに移行しています。
mysqldump <someparams> | pv | mysql <someparams>
そして、あるサーバーから別のサーバーに渡されるSQLから23行目(または最初のX行としましょう)(ファイルとして、または単にbash出力に保存される)を抽出する必要があります。
私が試したこと:
少なくとも出力のスクロールを確認するために、出力less
で連結しますが、運がありません
mysqldump <someparams> | pv | mysql <someparams> | less
sed
について読んでください、しかしそれは私には役に立ちません
ヘッドを使用してファイルに書き込みますが、空です
mysqldump <someparams> | pv | mysql <someparams> | head -n 25 > somefile.txt
私が持っている唯一の要件は、この.sqlファイルを保存できないことです。
何か案が?
ありがとう
zsh
を使用
mysqldump <someparams> |
pv > >(sed '22,24!d' > saved-lines-22-to-24.txt) |
mysql <someparams>
bash
(またはzsh
)の場合:
mysqldump <someparams> |
pv |
tee >(sed '22,24!d' > saved-lines-22-to-24.txt) |
mysql <someparams>
(bash
はそのsed
プロセスを待機しないため、スクリプトで次のコマンドを実行するまでにsaved-lines-22-to-24.txt
が完了するとは限らないことに注意してください)。
または、次のようにsed
を書くこともできます。
mysqldump <someparams> |
pv |
sed '22,24 w saved-lines-22-to-24.txt' |
mysql <someparams>
zsh
を使用して、出力として使用するには:
{mysqldump <someparams> |
pv > >(sed '22,24!d' >&3) |
mysql <someparams>} 3>&1
またはbash
/zsh
:
{ mysqldump <someparams> |
pv |
tee >(sed '22,24!d' >&3)
mysql <someparams>
} 3>&1