.
각 숫자의 시작이나 끝에서 문자를 제거하는 방법은 무엇입니까 ?
참고 - 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