파일에서 특정 번호를 삭제하는 방법은 무엇입니까?

파일에서 특정 번호를 삭제하는 방법은 무엇입니까?

파일이 있습니다:

1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0

모든 0을 제거하고 싶습니다.

1 2 5 6 8 
1 2 5 6 8 
1 2 5 6 8 
1 2 5 6 8

나는 노력했다 tr -d [:0:]. 불행하게도 이런 식으로 작동해서는 안 됩니다.

나는 Perl이 그 일을 할 수 있다고 믿지만 sed, 정확히 어떻게 하는지는 모릅니다.

Google에서 검색했는데 제 말을 믿으신다면 결과가 혼합되어 있고 관련성이 있었지만 첫 페이지에서 올바른 결과를 찾을 수 없었습니다.

답변1

[8]root@lab711:> cat file
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
1 2 5 6 8 0 0 0 0
[8]root@lab711:> sed 's/0//g' file
1 2 5 6 8
1 2 5 6 8
1 2 5 6 8
1 2 5 6 8

답변2

tr이 직업에 적합함:

tr -d 0 <file

[:0:]사용해야 하므로 유효하지 않습니다.캐릭터 클래스사이.[::]

답변3

파일에서 0을 모두 제거하기 위해 사용하는 명령은 대체 sed 's/0//g' filename의미 입니다 s. /0파일의 모든 0을 나타냅니다 . 아무것도 대체하지 //않습니다. g세계를 대표하다

답변4

노력하다

perl -pe 's/\s+0\b//g' <filename>
  • -p파일 라인을 반복하고 인쇄합니다.$_
  • -e구현하다
  • /g전역(발생하는 모든 것)
  • 정규식은 s/\s+0\b//최소한 하나의 공백, 문자 0, 단어의 끝 순서를 제거합니다.

또는 파일의 위치를 ​​바꾸려면

sed -ibbak -e 's/\s\+0\b//g' <filename>
  • -i제자리에
  • -b.bak백업 만들기(확장자는 .bac)
  • 여기서 정규식 +문자는 이스케이프되어야 합니다.
  • \s정규식에 공백이 있습니다
  • \b정규식에서 접미사라는 단어는 다음과 같습니다.

출시되길 바랍니다!

관련 정보