grep을 사용하여 패턴을 찾은 다음 sed [duplicate]로 바꾸십시오.

grep을 사용하여 패턴을 찾은 다음 sed [duplicate]로 바꾸십시오.

다음 코드 줄이 있습니다

        BalancerMember http://server3:82 status=D
        BalancerMember http://server2:80 status=D

포트 82에 대한 항목을 검색한 다음 삭제하고 싶습니다 status=D.

        BalancerMember http://server3:82

이것을 시도했지만 작동하지 않습니다

  grep :82 app.conf | sed -i 's/status=D/ /'
  sed: no input files

파일을 변경하고 싶기 때문에 -i옵션이 필요합니다 .sed

어떤 제안이라도.

답변1

완전한 sed 솔루션을 테스트할 수 있습니다.

sed -i '/:82 /s/status=D//' file

어디

  • /:82 /82가 있는 행을 선택하세요.
  • s/status=D/상태를 다음으로 대체
  • //아무것도 없습니다.

답변2

샘플 데이터에 따르면 이것이 작동합니다

awk '/:82 /{print $1,$2; next} {print}' inputfile

출력을 다른 파일로 리디렉션할 수 있습니다.

awk '/:82 /{print $1,$2; next} {print}' inputfile >> newfile

일반적으로 말해서, 나는 도움이 된다면 원본 데이터를 변경하고 싶지 않습니다.

답변3

주어진 입력을 기반으로

awk '$2~/:82$/{$NF=""}1' input.txt > output.txt

관련 정보