특정 패턴 바로 뒤에 다음 문자열/단어 바꾸기

특정 패턴 바로 뒤에 다음 문자열/단어 바꾸기

file.py ARG내 파일에 이와 같은 패턴이 있습니다

패턴을 검색하여 바꾸고 싶습니다 file.py(ARG아니요"모든 일치 항목에서 후행 큰따옴표를 제거합니다.

입력 파일은 다음과 같습니다.

"SEC":"NEW"
"CMD":"/usr/local/file.py ARG"

명령줄 대체를 사용하고 싶습니다 ARG(여기서는 상수가 아니고 어떤 텍스트라도 가능합니다). ARG그래서 큰따옴표를 제거하지 않고 텍스트를 검색하고 바꾸는 패턴을 찾고 있습니다 file.py.

답변1

질문에 제공하신 내용을 바탕으로 다음을 수행하세요.

sed 's/\(file.py\) \+.\+"$/\1 NEW_VALUE"/'

sed- 스트림 편집기
s- 명령 대체
/\(file.py\) \+.\+"$/- 끝에 '가 있는 모든 줄 찾기file.py','하나 이상의 공백','하나 이상의 문자열', 및 '"'(큰따옴표) -
\1이는 첫 번째(이 경우에만) 하위 표현식을 대체합니다 .(file.py)

답변2

초보자를 위해 이렇게 해보자 sed:

아마도 substitude 명령을 알고 있을 것입니다 s/old/new/. 이제 문자열 ARG를 알 수 없으므로 몇 가지 특성을 찾아야 합니다. 예를 들어, 줄 끝에 큰따옴표만 있고 영숫자 문자만 포함되어 있습니까? 엄청난! [:alnum:]줄 끝에는 문자 클래스와 "$" 앵커를 사용합니다 .

sed 's/[[:alnum:]]*"$/new"/'

그러나 이것은 온라인으로만 적용되어야 합니다 file.py. sed이를 위해 줄 번호나 /patterns/명령 앞에 주소를 사용하십시오.

sed '/file.py/s/[[:alnum:]]*"$/new"/'

관련 정보