sed를 사용하여 한 줄에 여러 문자열에 접두사와 접미사를 추가하세요.

sed를 사용하여 한 줄에 여러 문자열에 접두사와 접미사를 추가하세요.

다음과 같이 한 줄에 약 15,000,000개의 INSERT 명령이 포함된 .sql 파일이 있습니다.

INSERT INTO tableName (col1,col2,col3,col4,col5,col6,col7,col8) VALUES ('Jan 7 2018 12:33PM', 'R', 'essential-app', '15952008002', 'Jan 7 2018 12:30PM', '0', 'E', NULL);

STR_TO_DATE('Jan 7 2018 12:33PM',%b %d %Y %h:%i%p)두 개의 날짜/시간 값을 래핑하여 원래 값을 그대로 유지하고 싶습니다 .

이전에 sed를 사용하여 파일을 약간 변경한 적이 있지만 이렇게 복잡한 것은 없었습니다. 이러한 날짜/시간 값을 동시에 찾으려면 어떻게 해야 하며, 일치하는 문자열의 시작과 끝에 문자열을 추가하려면 어떻게 해야 합니까?

처음에 추가: STR_TO_DATE(
끝에 추가:,%b %d %Y %h:%i%p)

할 수 있는하나의 sed 명령으로 수행할 수 있습니까? 아니면 각 날짜/시간 값에 대해 하나의 sed 명령을 사용해야 합니까?

답변1

노력하다:

sed -r -e 's/'\''[A-Z][a-z][a-z]\s+[0-9]+\s[0-9]{4}\s+[0-9]+:[0-9][0-9][AP]M'\''/STR_TO_DATE(&, '\''%b  %d %Y %h:%i%p'\'')/g'

노트:

  • '\''작은따옴표로 묶인 문자열에 작은따옴표를 삽입하는 방법입니다.

  • 정규식 일치:

    • 작은따옴표 ', 그 뒤에
    • 하나의 대문자와 두 개의 소문자 Jan(또는 Feb무엇이든),
    • 하나 이상의 공백, 하나 이상의 숫자, 공백, 네 자리 숫자 7 2018,
    • 하나 이상의 공백, 하나 이상의 숫자, 콜론, 두 자리 숫자, A 또는 P, M 12:30PM및 마지막
    • 또 다른 작은따옴표 '.

이 변경

INSERT INTO tableName (col1,col2,col3,col4,col5,col6,col7,col8) VALUES ('Jan  7 2018 12:33PM', 'R', 'essential-app', '15952008002', 'Jan  7 2018 12:30PM', '0', 'E', NULL);

입력하다

INSERT INTO tableName (col1,col2,col3,col4,col5,col6,col7,col8) VALUES (STR_TO_DATE('Jan  7 2018 12:33PM', '%b  %d %Y %h:%i%p'), 'R', 'essential-app', '15952008002', STR_TO_DATE('Jan  7 2018 12:30PM', '%b  %d %Y %h:%i%p'), '0', 'E', NULL);

나는 형식 문자열을 작은 따옴표로 묶었습니다. 그것이 우리의 의도이기를 바랍니다.

관련 정보