Shell 脚本:找到匹配项后从文件中提取字符串的一部分

Shell 脚本:找到匹配项后从文件中提取字符串的一部分

必须编写脚本来从文件中提取并返回字符串值。仅当在文件中找到给定模式的匹配项后,才必须执行此操作。

例子:

"id":"re454sv:57ghg34sfw:87wre56:rty4598gh" 

该文本是一个大日志文件的子部分,并且可能会发生许多这种情况"id":"some value"。我每次都需要从该目录中的许多文件中返回“某个值”部分。

我认为sedUnix 中的实用程序在这里有帮助,但我无法弄清楚它的确切用法。如果有人能提供帮助,我会很高兴。

答案1

您不清楚是否只需要第一个:分隔值或标记后的行的整个其余部分"id"

前者是:

sed -nre 's/^"id":"([^:]*):.*/\1/p' <file>

后者是:

sed -nre 's/^"id":(.*)/\1/p' <file>

请注意,开关很重要。-n确保不打印任何内容(尾部p打印那些匹配的行)。-r启用扩展正则表达式解析,因此不必转义括号之类的内容。

答案2

sed 's/"id":"\([^"]*\)"/\1/g'

如果通过 stdin 输入该值,则提取该值

相关内容