sed + 각 숫자의 시작이나 끝 문자를 제거하는 방법

sed + 각 숫자의 시작이나 끝 문자를 제거하는 방법

.각 숫자의 시작이나 끝에서 문자를 제거하는 방법은 무엇입니까 ?

참고 - perl라이너도 좋은 대안입니다 sed.

입력 예:

 .23.12.44.5.
 .233.3.3.3
 23.4.5.3.2..
 ....33.2.3.45.5
 .3.3.2.....

예상 출력:

 23.12.44.5
 233.3.3.3
 23.4.5.3.2
 33.2.3.45.5
 3.3.2

(줄은 공백(공백 또는 탭)으로 끝나거나 시작할 수 있으므로 이를 유지해야 합니다.)

답변1

표준 구문 사용(OP에서 Solaris를 언급한 이후):

sed 's/^\([[:blank:]]*\)\.*/\1/;s/\.*\([[:blank:]]*\)$/\1/'

Solaris에서는 평소와 같이 전화를 걸 /usr/xpg4/bin/sed거나command -p sed

답변2

여기 있어요:

sed -e 's/^\(\s*\)\.\+/\1/;s/\.\+\s*$//' your_file

그러면 수정된 파일이 표준 출력으로 인쇄됩니다. 다른 파일에 쓰려면 다음을 사용하십시오.

sed -e 's/^\(\s*\)\.\+/\1/;s/\.\+\s*$//' your_file >new_file

파일을 제자리에서 수정하려면 다음을 사용하세요.

sed -i -e 's/^\(\s*\)\.\+/\1/;s/\.\+\s*$//' your_file

편집하다

  • (가능한) 선행 또는 후행 공백을 설명하기 위해 정규식을 수정했습니다.
  • 선행 공백을 보존하기 위해 manatwork의 설명을 기반으로 정규식을 수정했습니다.

답변3

$ cat foo
.23.12.44.5.
 .233.3.3.3
line1
 23.4.5.3.2..
 ....33.2.3.45.5
 .3.3.2.....

line2
$ sed 's/^ *\.*//;s/\.* *$//' foo
23.12.44.5
233.3.3.3
line1
23.4.5.3.2
33.2.3.45.5
3.3.2

line2

관련 정보