다음 이름 의 텍스트 파일이 있습니다 .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 }
두 번째 열을 인쇄합니다.