다음과 같은 줄이 포함 된 파일에서 :
# lorem ipsum blah variable
#
특정 문자열이 포함 된 동일한 줄에서 문자 를 제거하고 싶습니다 . 가 sed
이 좋은?
이 조건부 작업을 수행하기 위해 고심하고 있습니다. 이 작업을 수행하는 “서투른”방법이 있습니다. awk
or 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
-
s
대용품 -
x
저장하고 닫습니다