반응형
sed-아직 주석 처리되지 않은 특정 문자열과 일치하는 행에 주석 달기
다음 테스트 파일이 있습니다.
AAA
BBB
CCC
다음 sed를 사용하여 BBB 라인을 주석 처리 할 수 있습니다 .
# sed -e '/BBB/s/^/#/g' -i file
시작 부분에 #이없는 경우에만 줄을 주석 처리하고 싶습니다.
# sed -e '/^#/! /BBB/s/^/#/g' file
sed: -e expression #1, char 7: unknown command: `/'
어떻게 이것을 달성 할 수 있는가?
여러 줄이 없다고 가정하면 다음과 #
같이 작동합니다.
sed -e '/BBB/ s/^#*/#/' -i file
참고 : 한 줄에 최대 하나의 대체를 수행하므로 / g가 필요하지 않습니다.
이 솔루션이 가장 잘 작동한다는 것을 알았습니다.
sed -i '/![^#]/ s/\(^.*BBB.*$\)/#\ \1/' file
얼마나 많은 "#"기호가 있는지는 중요하지 않으며 다른 기호를 추가하지 않습니다. 검색하려는 패턴에 "#"이 포함되어 있지 않으면 줄의 시작 부분에 추가되고 후행 공백도 추가됩니다.
후행 공백을 원하지 않는 경우
sed -i '/![^#]/ s/\(^.*BBB.*$\)/#\1/' file
&
패턴 공간의 전체 일치 부분을 참조 하는 특수 문자를 사용하는 또 다른 솔루션입니다 . 정규 표현식 그룹을 캡처하고 참조하는 것보다 조금 더 간단하고 깔끔합니다.
sed -i 's/^[^#]*BBB/#&/' file
sed -i '/![^#]/ s/\(^.*BBB.*$\)/#\ \1/' file
이것은 키워드로 나를 위해 작동하지 않으며 *.sudo
전혀 의견이 없습니다 ...
Ony 아래 구문이 작동합니다. sed -e '/sudo/ s/^#*/#/' file
실제로, 캐럿 기호는 이미 대괄호 안에있는 모든 것을 부정하고 검색에서 모든 해시 기호를 무시하므로 느낌표 (!)가 필요하지 않습니다. 이 예제는 저에게 효과적이었습니다.
sed -i '/[^#]/ s/\(^.*BBB.*$\)/#\ \1/' file
반응형
'development' 카테고리의 다른 글
Amazon RDS에 사용 가능한 메모리가 부족합니다. (0) | 2021.01.07 |
---|---|
Ubuntu에서 JAVA_HOME 경로를 설정하는 방법은 무엇입니까? (0) | 2021.01.07 |
ReactJS : 자식 구성 요소에 배치 될 때 onClick 핸들러가 실행되지 않음 (0) | 2021.01.07 |
Python Pandas equivalent in JavaScript (0) | 2021.01.07 |
git repo를 종속성으로 포함하도록 setup.py를 작성하는 방법 (0) | 2021.01.07 |