텍스트 파일 데이터를 열고 해당 파일에 업데이트 쿼리를 작성하고 cron을 통해 실행될 SQL 파일에 저장하는 스크립트를 원합니다. 명령을 준비했지만 RPAD에 업데이트 쿼리를 작성하는 방법은 다음과 같습니다. 샘플 데이터 및 명령은 다음과 같습니다.
text file data : cat file.txt
123456789
234567891
345678912
456789123
명령:
고양이 file.txt | sed ‘s / $ / update table set field where file_number = “file.txt”/’> file1.sql
현재 출력 :
123456789update table set field where file_number=
234567891update table set field where file_number=
345678912update table set field where file_number=
456789123update table set field where file_number=
예상 출력 :
update table set field where file_number='123456789';
update table set field where file_number='234567891';
update table set field where file_number='345678912';
update table set field where file_number='456789123';
답변
더 우아한 접근 방식이있을 수 있지만 (그러나 그중 하나가 지금 내 마음에 들어옵니다) sed
.
-
예상대로 명령이 작동하지 않는 이유
$
일치하는 라인의 끝을 당신의 이유, 그건update table ...
문자열이 각 줄의 끝에 배치됩니다. -
개선하는 방법?
- 당신은 필요하지 않습니다
cat
;sed
파일을 인수로 사용합니다. - 전체 라인을 일치하는 패턴으로 정의하십시오 (
.*
모든 것을 일치시키고 이스케이프 된 괄호로 묶어 참조하십시오).\(.*\)
-
sql 명령 문자열을 대체물로 사용하고
\1
적절한 곳에 참조 표시를 두십시오 .sed "s|\(.*\)|update table set field where file_number=\'\1\';|" file.txt > file.sql
생산
update table set field where file_number='123456789'; update table set field where file_number='234567891'; update table set field where file_number='345678912'; update table set field where file_number='456789123';
- 당신은 필요하지 않습니다