줄 주석 달기 및 주석 해제를 위한 Bash 스크립트

줄 주석 달기 및 주석 해제를 위한 Bash 스크립트

이 기간 동안 잘 지내시기 바랍니다. 문제는 내 txt 파일의 일부 줄에 주석을 달고 싶다는 것입니다. 여러 줄에 주석을 달고 주석을 해제하는 코드가 있는데 회사 이름을 얻는 방법을 모르겠습니다. 내 텍스트 파일에는 다음 구성표가 있습니다.lunar_static KKK_<countryname>_NUM 08.00.name

lunar_static KKK_USA_NUM 08.00.Winter
lunar_static KKK_ITALY_NUM 08.Winter
lunar_static KKK_ITALY_NUM 08.00.Spring
lunar_static KKK_ITALY_NUM 08.00.Autumn
lunar_static KKK_SPAIN_NUM 08.00.Winter
lunar_static KKK_SPAIN_NUM 08.00.Spring
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_FRANCE_NUM 08.00.Autumn
lunar_static KKK_ITALY_NUM 08.00.Ferari-taxi
lunar_static KKK_ITALY_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ROMANIA_NUM "/^08\\.00\\.Delta\\ M$/"
lunar_static KKK_ITALY_NUM "/^08\\.00\\.Red\\_Park$/"

가을, 페라리택시, 델타M, 레드파크로 이탈리아에 대한 코멘트를 드리고 싶습니다. 나는 sed를 사용하여 몇 가지 이름에 주석을 달는 방법을 알고 있습니다.

sed -i '/Winter\|Spring/s/^/#/' file2.txt

그리고 주석 해제

sed -i '/Spring/s/^#//' file2.txt

그러나 국가 이름에 관계없이 모든 이름을 선택합니다. 그 나라로 가는 방법을 모른다. 예상 출력

    lunar_static KKK_USA_NUM 08.00.Winter
    lunar_static KKK_ITALY_NUM 08.Winter
    lunar_static KKK_ITALY_NUM 08.00.Spring
    #lunar_static KKK_ITALY_NUM 08.00.Autumn
    lunar_static KKK_SPAIN_NUM 08.00.Winter
    lunar_static KKK_SPAIN_NUM 08.00.Spring
    lunar_static KKK_FRANCE_NUM 08.00.Autumn
    lunar_static KKK_FRANCE_NUM 08.00.Autumn
    #lunar_static KKK_ITALY_NUM 08.00.Ferari-taxi
    #lunar_static KKK_ITALY_NUM "/^08\\.00\\.Delta\\ M$/"
    lunar_static KKK_ROMANIA_NUM "/^08\\.00\\.Delta\\ M$/"
    #lunar_static KKK_ITALY_NUM "/^08\\.00\\.Red\\_Park$/"

나는 내가 받는 모든 제안에 감사드립니다. 감사합니다!

답변1

ITALY검색어에 대상 국가를 포함하고 대안을 그룹화하고 두 검색어 (Autumn|Delta....)사이에 문자를 허용해야 합니다..*

sed -E '/ITALY.*(Autumn|Delta.. M|Red.._Park|Ferari-taxi)/s/^/#/' file1

\탈출을 피하기 위한 약간의 치트입니다.

sed -E '/ITALY.*(Autumn|Delta\\\\ M|Red\\\\_Park|Ferari-taxi)/s/^/#/' file1

-iin place 플래그를 포함하여 동일한 파일을 변경합니다.sed

sed -i -E .....

편집하다이것을 다른 질문으로 게시할 수도 있지만...

\\"...sed를 입력하지 않고도 단어를 찾을 수 있나요 \\\\?..."즉, 아니오도망가다그들을.

아니요. 왜냐하면여기:

'\' 문자 뒤에 일부 일반 문자가 올 때 특별한 의미를 갖습니다.

따라서 일치 문자열에서 다음 문자가 \예약된 쌍(예: \+, \?, ) 중 하나를 구성하는 \n문자 인 경우 리터럴 이나 개행 문자를 sed찾고 있는지 어떻게 알 수 있습니까?\n

따라서 \문자 그대로 읽어야 하는 모든 문자는 sed예약된 문자 시퀀스의 일부가 아님을 분명히 하기 위해 이스케이프되어야 합니다.

관련 정보