次の名前のテキストファイルがあります.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 }
2番目の列を印刷します。