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 }2番目の列を印刷します。

関連情報