이 기간 동안 잘 지내시기 바랍니다. 문제는 내 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$/"
ITALY에 Autumn, Ferrari-taxi, Delta M, Red_Park라는 이름을 붙여 댓글을 달고 싶습니다. 나는 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
-i
다음에 대한 위치 플래그를 포함하여 동일한 파일에서 변경을 수행합니다 .sed
sed -i -E .....
편집하다이것을 다른 질문으로 게시할 수도 있었지만...
\\
"...sed를 입력하지 않고도 단어를 찾을 수 있나요 \\\\
?..."즉 없이탈출그들을.
아니요. 그 이유는여기:
'\' 문자 뒤에 특정 일반 문자가 오면 특별한 의미를 갖습니다.
따라서 일치하는 문자열에서 the 뒤의 문자가 예약된 쌍(예: , , ) \
중 하나를 형성하는 문자인 경우 리터럴을 찾고 있는지 개행 문자를 찾고 있는지 어떻게 알 수 있나요 ?\+
\?
\n
sed
\n
따라서 \
문자 그대로 읽으려는 각 항목은 sed
예약된 문자 시퀀스의 일부가 아니라는 것을 명확하게 알 수 있도록 이스케이프되어야 합니다.