sed는 일치하는 하위 문자열을 추출합니다.

sed는 일치하는 하위 문자열을 추출합니다.

다음 이름 의 텍스트 파일이 있습니다 .env.

SOME_VAR="value"
SOME_VAR_2="value2"
NODE_ENV="staging"
SOME_VAR_3="value3"

문자열 ""줄의 시작 부분 사이의 위치를 ​​추출해야 합니다.NODE_ENV=

즉, staging해당 파일의 문자열이 필요합니다.

시도했지만 sed사용 방법을 모르겠습니다.

sed -r '/NODE_ENV.*/I!d;s/.*:.(.*).}$/\1/' .env

하지만 그건:

NODE_ENV="staging"

나는 가지고 있어야

staging

답변1

sed를 사용하여 다음과 같은 작업을 수행할 수 있습니다.

$ sed -n '/^NODE_ENV/s/^[^"]*"\([^"]*\)"$/\1/p' .env
staging

  • -n:인쇄를 억제합니다.
  • /^NODE_ENV/: 로 시작하는 줄을 선택합니다 NODE_ENV.
  • ^[^"]*"\([^"]*\)"$": 줄의 시작 부분 "( )에서 시작하지 않는 모든 문자를 선택한 다음 , ( ) ^[^"]*"뒤에 나오지 않는 모든 문자를 캡처하고 , 마지막으로 ( )를 선택합니다 ."\([^"]*\)""$
  • /\1/p:모든 것을 캡처된 그룹( \1) 및 인쇄( p)로 대체합니다.

awk를 사용하세요

$ awk -F'"' '/^NODE_ENV/ { print $2 }' .env
staging

  • -F'"': "구분자로 사용됩니다.
  • /^NODE_ENV/: 로 시작하는 줄을 선택합니다 NODE_ENV.
  • { print $2 }두 번째 열을 인쇄합니다.

관련 정보