从字符串中查找特定数据

从字符串中查找特定数据

这是数据:

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 

相关内容