sed를 사용하여 문자열 내에서 공백과 특수 문자를 올바르게 이스케이프 처리하는 방법을 이해하기 위해 많은 게시물을 읽었지만 아직 만들 수 없습니다. 이루다.linux sed와 특수 문자로 문자열 바꾸기
나는이 하나처럼 일부 문자열을 포함하는 파일이 있습니다
JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.jsessionid=some_value"
을하고 난 다음 사용하여 'some_value'을 대체하기 위해 노력하고있어 :
sed -i "s/^\(JAVA_OPTS=\"\$JAVA_OPTS[ \t]*-Dorg\.apache\.catalina\.jsessionid*=\s*\).*\$/\1$DORG_APACHE_CATALINA_JSESSIONID/" $JBOSS_CONFIGURATION/jboss.configuration
- $ JBOSS_CONFIGURATION 인 절대 리눅스 경로를 포함하는 변수.
- jboss.configuration은 작업을 대체하기위한 대상으로 지정하는 파일입니다.
- $ DORG_APACHE_CATALINA_JSESSIONID에 'some_value'의 대신 원하는 값이 포함되어 있습니다.
패턴 있습니다 :
JAVA_OPTS="$JAVA_OPTS -D
은 항상 존재하고, org.apache.catalina.jsessionid 내가이 스크립트로 교체하기 위해 노력하고있어 변수 값의 예입니다.
누락되었거나 잘못 되었습니까? 나는 또한 성공하지 \ S를 사용하여 공백을 탈출, 전체를 울리는 것은 다음 나에게주는 시도 :
echo "s/^\(JAVA_OPTS=\"\$JAVA_OPTS[ \t]*-Dorg\.apache\.catalina\.jsessionid*=\s*\).*\$/\1$DORG_APACHE_CATALINA_JSESSIONID/"
s/^\(JAVA_OPTS="$JAVA_OPTS[ \t]*-Dorg\.apache\.catalina\.jsessionid*=\s*\).*$/\1/
가하는 나오지으로 검색 패턴을 해석 에코입니까?
은 매우 환영하고 모든 정보/도움/다른 방법
는 여러분 모두 감사합니다
모든 응답은 유용했지만이 예제는 내가 제공 한 예제와 가장 일관성이 있습니다. 감사합니다. 그냥 빠른 추가, 패턴의 첫 번째 또는 두 번째 발생을 대체하는 스크립트를 수정하는 방법? – KRiSh05
내가 무슨 뜻인지 잘 모르겠다. sed에서 마지막'/'다음에 'g'수정자를 사용하면 모든 발생을 대체합니다.'g'대신 숫자를 사용하면 해당 숫자에 해당하는 항목을 대체합니다. 예 : sed '/ foo/bar/g'은 'foo'의 모든 항목을 'bar'로 바꿉니다. sed '/ foo/bar/2'는 두 번째 항목 만 대체합니다. – rectummelancolique
일반 정보가 정확합니다. 고맙습니다. 나는 이것에 대한 설명이 필요하다 : DORG_APACHE_CATALINA_JSESSIONID /////변수 값에서 탈출해야하는 문자만큼 /을 추가해야 하는가? 4 개의 연속 된 슬래시가 있다는 의미는 무엇인가? – KRiSh05