"sed" 날짜 형식 문제

"sed" 날짜 형식 문제

데이터베이스에서 파일을 가져오기 위해 쉘 스크립트를 사용하고 있습니다. 쉘 스크립트를 실행한 후의 데이터는 다음과 같습니다. 파이프로 구분된 데이터 파일입니다.

4676004||2017-09-2900:00:00|13222|0|XYZ|TTTTT||1855467|S|14671 

스풀을 사용하여 파일을 생성한 후 데이터 형식을 지정하기 위해 실행한 명령은 다음과 같습니다.

sed -i -E 's/[[:blank:]]+(||$)/\1/g' Test.txt.  

하지만 문제는날짜데이터

2017-09-2900:00:00, 이런 게 필요해요2017-09-29 00:00:00

날짜와 시간 사이에 공백이 있어야 합니다. 어떻게 해야 하나요?

답변1

그냥 해.

sed 's/....-..-../& /' infile

xxxx-xx-xx항상 형식과 일치하는 패턴이 있다고 가정합니다 .

또는 먼저 SQL에서 작업을 수행하도록 substr명령에 지시해야 합니다 .select

select ... '|' || substr(mydate,1,10) || subtsr(mydate,11,8) || '|'  ...

답변2

$ sed -E 's/([0-9]{2})([0-9]{2}):/\1 \2:/' file
4676004||2017-09-29 00:00:00|13222|0|XYZ|TTTTT||1855467|S|14671

이는 입력 줄에서 4자리 앞에 a가 나타나는 유일한 위치가 :날짜 문자열에 있다고 가정합니다. sed공백으로 구분된 두 숫자의 두 세트를 바꿉니다 .

관련 정보