シェルスクリプトのファイル行から指定された日付を抽出する

シェルスクリプトのファイル行から指定された日付を抽出する

次の内容を含む `StandardDefaults.txt ファイルがあります。

 [MetaInfo]
 fileName="BUStandardDefaultsFile.dat"
 schemaVersion="2"
 schemaLocation="sftp:/var/app/napsgl/cgdata/GLFSUTN1/intfc/dsmtout/ISG/Schema/BUStandardDefaultsFileSchema_02.json"
 generationTime="2023-06-13T10:19:13.060606"
 process_time"2023-06-14T08:29:13.060606"
 recordsCount=1041

generationTime期待される出力値に関連する日付を抽出する必要があります。

 2023-06-13

私はファイルからインポートを試しましたgrepgenerationTimeしかし、日付値を抽出するのに助けが必要です。日付値を文字列に保存したいです。その後、さらなる処理に使用されます。

ベストアンサー1

そしてawk

awk -F'["T]' '/^generationTime/ {print $3}' StandardDefaults.txt
2023-06-13

これは、またはフィールド区切り文字としてawk使用し、次に始まる入力行に3番目のフィールドを印刷するように指示します。"TgenerationTime

なぜ3番目のフィールドですか?大文字のためTgenerationTime前のすべての内容は$ 1です)、2番目のフィールド$ 2は"そこから最初の文字までのすべての内容であり、3番目のフィールドである$ 3はそこから次のものまでですT

generation   T  ime=   "  2023-06-13   T  10:19:13.060606   "
    $1      FS   $2   FS      $3      FS        $4         FS   $5 

FS はフィールド区切り文字を表します。最後のフィールド区切り文字の後に何もないので、$ 5は空です"NFに重要かもしれませんNF)。

awk(またはstdoutで印刷するすべてのプログラム)の出力を変数に保存するには、次のようにします。コマンドの置き換え、例えば:

$ myvar=$(awk -F'["T]' '/^generationTime/ {print $3}' StandardDefaults.txt)

$ echo $myvar
2023-06-13

おすすめ記事