![GPS 데이터를 복구하는 정규식](https://linux55.com/image/203404/GPS%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%EB%B3%B5%EA%B5%AC%ED%95%98%EB%8A%94%20%EC%A0%95%EA%B7%9C%EC%8B%9D.png)
Linux에서 텍스트 파일의 GPS 데이터를 수정하려고 합니다.
잘못된 문자열 모델:49:29:37N 005:28:39E
2자리 또는 3자리: 2자리 또는 3자리: 2자리 또는 3자리(N|S) 2자리 또는 3자리: 2자리 또는 3자리: 2자리 또는 3자리(E|W)
올바른 문자열 모델:49:29:37 N 005:28:39 E
2자리 또는 3자리: 2자리 또는 3자리: 2자리 또는 3자리(N|S) 2자리 또는 3자리: 2자리 또는 3자리: 2자리 또는 3자리(E|W)
누구든지 내가 이 일을 하도록 도와줄 수 있나요?
감사해요
니콜라스
답변1
가능한 네 글자 모두 앞에 공백을 삽입하십시오 sed
.
sed 's/[NESW]/ &/g' file
산출:
49:29:37 북쪽 005:28:39 동쪽
답변2
나침반 방향을 나타내는 숫자와 문자 사이에 공백을 추가하려는 경우 다음이 효과가 있을 것 같습니다.
sed -E 's/([0-9]{2,3}:[0-9]{2,3}:[0-9]{2,3})([NS])\s+([0-9]{2,3}:[0-9]{2,3}:[0-9]{2,3})([EW])/\1 \2 \3 \4/g' input.txt
input.txt
또는 출력을 파일로 원할 경우 stdin에서 지정하고 파이프 하지 말고 > output.txt
끝에 추가하십시오.
이는 N/S와 다음 좌표에서 시작하는 숫자 사이에 공백 또는 기타 공백 문자를 허용하고 해당 위치에 단일 공백을 출력합니다. 필요한 경우 조정이 이루어질 수 있습니다.
편집: 일부 입력 데이터에 이미 두 좌표 중 하나의 좌표 번호와 방향 문자 사이에 공백이 있지만 둘 다에는 없는 경우 다음을 시도하십시오.
sed -E 's/([0-9]{2,3}:[0-9]{2,3}:[0-9]{2,3}) *([NS])\s+([0-9]{2,3}:[0-9]{2,3}:[0-9]{2,3}) *([EW])/\1 \2 \3 \4/g' input.txt