![从字符串中查找特定数据](https://linux22.com/image/138842/%E4%BB%8E%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E6%9F%A5%E6%89%BE%E7%89%B9%E5%AE%9A%E6%95%B0%E6%8D%AE.png)
这是数据:
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