`tr`은 예상보다 더 많은 것을 대체합니다.

`tr`은 예상보다 더 많은 것을 대체합니다.

정기적으로 백업할 때 OneDrive에 저장하고 싶은 강의용 파일이 많이 있습니다. 제 동료들이 파일 이름을 잘 지정하지 못해서 파일을 가져오려면 OneDrive를 정리해야 합니다.

내가 얻을 수 없는 부분은 마침표 앞에 공백을 선택하는 방법입니다.

나는 이것을 시도하고있다

bash-3.2$ echo "foo bar .pdf" | tr -s " \." '\.'

그리고 이것을 얻는다

foo.bar.pdf대신에 foo bar.pdf. 내 명령에 어떤 문제가 있나요?

답변1

tr대체하다하나의문자를 단일 문자로 사용하고 각 공백과 각 점을 점으로 바꾸라고 지시했습니다( -s대체하기 위해 공백+점을 단일 엔터티로 압착하는 경우는 제외). 즉, 하나의 공백 또는 점으로 tr.

문자열을 바꾸려면 다음을 사용하십시오 sed.

echo "foo bar .pdf" | sed 's/ \././g'

참고: 당신이 행위를 전역적으로 사용했기 g때문에 tr나는 이것이 당신이 일반적으로 원하는 것이라고 가정했습니다(이 특정 문자열에는 중요하지 않습니다 foo bar .pdf).

관련 정보