데이터베이스에서 파일을 가져오기 위해 쉘 스크립트를 사용하고 있습니다. 쉘 스크립트를 실행한 후의 데이터는 다음과 같습니다. 파이프로 구분된 데이터 파일입니다.
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
공백으로 구분된 두 숫자의 두 세트를 바꿉니다 .