cat 파일의 LPAD 업데이트 쿼리에 대한 UNIX 스크립트


0

텍스트 파일 데이터를 열고 해당 파일에 업데이트 쿼리를 작성하고 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';

답변:


0

더 우아한 접근 방식이있을 수 있지만 (그러나 그중 하나가 지금 내 마음에 들어옵니다) sed.

  • 예상대로 명령이 작동하지 않는 이유

    $일치하는 라인의 끝을 당신의 이유, 그건 update table ...문자열이 각 줄의 끝에 배치됩니다.

  • 개선하는 방법?

    1. 당신은 필요하지 않습니다 cat; sed파일을 인수로 사용합니다.
    2. 전체 라인을 일치하는 패턴으로 정의하십시오 ( .*모든 것을 일치시키고 이스케이프 된 괄호로 묶어 참조하십시오).\(.*\)
    3. 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';
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.