Sed — 일치하는 줄의 문자를 대체 하시겠습니까? : # lorem ipsum blah

다음과 같은 줄이 포함 된 파일에서 :

# lorem ipsum blah variable

#특정 문자열이 포함 된 동일한 줄에서 문자 를 제거하고 싶습니다 . 가 sed이 좋은?

이 조건부 작업을 수행하기 위해 고심하고 있습니다. 이 작업을 수행하는 “서투른”방법이 있습니다. awkor sed와 일치하는 줄 번호를 찾은 다음이 번호를 별도의 sed명령으로 사용할 수 있지만 훨씬 더 좋은 방법으로 수행 할 수 있다고 생각합니다.



답변

찾고자하는 스트링을 조작 할 라인 선택기로 사용하십시오.

sed '/ipsum/s/#//g'

/ipsum/“ipsum”을 포함하는 행을 선택하고이 행에서만 뒤에 오는 명령이 실행됩니다. 중괄호를 사용하여 더 많은 명령을 실행할 수 있습니다

/ipsum/{s/#//g;s/@/-at-/g;}

답변

$ cat input.txt
# lorem ipsum blah variable
# lorem ipsum blat variable
# lorem ipsum blow variable
# lorem ipsum blip variable
# lorem ipsum blue variable

그때:

$ sed 's|# \(.*blue.*\)|\1|' input.txt

제공합니다 :

# lorem ipsum blah variable
# lorem ipsum blat variable
# lorem ipsum blow variable
# lorem ipsum blip variable
lorem ipsum blue variable

다음과 같이 작동합니다.

s이야기 sed는 정규 표현식 발견 무엇으로 대체해야한다고.

패턴은 # \(.*blue.*\)다음과 같이 분류됩니다. 해시와 공백을 찾습니다. 대괄호 ( \()는 그룹화를 시작합니다. 전후에 무엇인가 .*blue.*있는 단어 blue입니다. 다음 대괄호 ( \))는 그룹을 닫습니다.

대체는 \1첫 번째 그룹화 브래킷의 내용에 대한 역 참조입니다.


답변

Ex 모드에서 Vim을 사용할 수 있습니다 :

ex -sc '/ipsum/s/#//|x' file
  1. s 대용품

  2. x 저장하고 닫습니다