文字列内の特定のデータを探す

文字列内の特定のデータを探す

データは次のとおりです。

Valid from: Fri Nov 24 12:11:28 EST 2017 until: Sun Nov 24 12:11:28 EST 2019
Valid from: Fri Feb 24 13:21:19 EST 2017 until: Thu Feb 24 13:31:19 EST 2022
Valid from: Tue Dec 20 12:01:19 EST 2016 until: Fri Dec 20 12:11:17 EST 2041

「until:」という単語の後に書かれたデータだけを抽出したいと思います。

たとえば、私はSun Nov 24 12:11:28 EST 2019

答え1

また試み

awk '{sub (/^.*until: /, "")} 1' file
Sun Nov 24 12:11:28 EST 2019
Thu Feb 24 13:31:19 EST 2022
Fri Dec 20 12:11:17 EST 2041

短い

sed 's/^.*until: //' file
Sun Nov 24 12:11:28 EST 2019
Thu Feb 24 13:31:19 EST 2022
Fri Dec 20 12:11:17 EST 2041

答え2

GNU grepの使用

echo "$string" | grep -oP 'until: \K.*'

「until:」という単語を一致させ、次に一致した\Kすべての項目を忘れて、.*それ以降のすべての項目を一致させることができます。

答え3

awk区切り文字をに設定すると、"until:"そのテキストが文字列にあるときに後続の文字列を取得できます。awk -F'until:' '{print $2}'

echo "Valid from: Fri Nov 24 12:11:28 EST 2017 until: Sun Nov 24 12:11:28 EST 2019" | awk -F'until:' '{print $2}'

答え4

フォーマットが常に同じである場合は、次のことを試すこともできます。

cut -d':' -f 5- /path-to-file 

関連情報