다음 명령을 사용하여 파이프라인 명령을 사용하여 한 호스트에서 다른 호스트로 대규모 프로덕션 데이터베이스를 마이그레이션하고 있습니다.
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 파일을 저장할 수 없다는 것입니다.
어떤 아이디어가 있나요?
감사해요
답변1
그리고zsh
mysqldump <someparams> |
pv > >(sed '22,24!d' > saved-lines-22-to-24.txt) |
mysql <someparams>
그리고 bash
(OR 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