특정 단어 뒤의 특정 문자를 제거하는 방법

특정 단어 뒤의 특정 문자를 제거하는 방법

,특정 단어 뒤의 문자를 제거하는 방법은 무엇입니까 ?

,예를 들어 단어 뒤의 문자를 삭제하고 싶습니다.IBM

  IBM, Inc.:APP-VM-Core:4.4.2.0:04,

예상되는 결과는 다음과 같습니다.

  IBM Inc.:APP-VM-Core:4.4.2.0:04,

동시에 나는 다음을 수행했습니다.

   echo “IBM, Inc.:APP-VM-Core:4.4.2.0:04,” | sed s'/,//'

하지만 문제는 ,이전의 첫 번째 단어가 무엇이든 관계없이 모든 문자를 삭제한다는 것입니다 ,. 제 경우에는 ,그 이후의 내용만 삭제하고 싶습니다 IBM.

예:

echo "APPLE, Inc.:APP-VM-Core:4.4.2.0:04,"| sed s'/,//'

APPLE Inc.:APP-VM-Core:4.4.2.0:04,

하지만 그래야 해

APPLE, Inc.:APP-VM-Core:4.4.2.0:04, 

답변1

노력하다:

$ echo "IBM, Inc.:APP-VM-Core:4.4.2.0:04," | sed '/^ *IBM/s/,//'
IBM Inc.:APP-VM-Core:4.4.2.0:04,

또는:

$ echo "IBM, Inc.:APP-VM-Core:4.4.2.0:04," | sed 's/^\( *IBM\),/\1/'
IBM Inc.:APP-VM-Core:4.4.2.0:04,

답변2

파일을 수정하려는 경우에는 exor 를 사용하고 싶지만 ed절대 그렇지 않습니다 sed. 왜 안 돼 sed?

sed스트림에서 데이터를 수정하는 데 사용할 수 있는 S스트리머 입니다 .ED

사용하면 ex다음을 수행할 수 있습니다.

ex -sc '%s/IBM,/IBM/g|x' file 파일 이름은 어디에 있습니까 file?

대안으로. 앞부분을 제거하고 싶다면공간또는예 를 들어, 그 이상이 필요합니다 ^ *. 솔루션은 awk다음과 같이 사용됩니다 .

awk '{sub(/^[ \t]+IBM,/,"IBM");};1' input_file > output_file

또는

awk '{sub(/^[[:blank:]]*IBM,/,"IBM");};1' input_file > output_file

미리 알려두겠습니다. ^ *감지되지 않습니다.

이전에 설명한 대로 사용할 수도 있지만 ex이제는 공백으로 시작하고 패턴을 포함하는 줄만 일치시키는 정규식을 포함합니다.국제 비즈니스 기계 공사

ex -sc '%s/^[[:blank:]]*IBM,/IBM/g|x' input_file

관련 정보