Linux命令行中快速提取键值对

Linux命令行中快速提取键值对

我有一个很大的(几十 GB)文本文件,其中包含key=value;foo=bar;baz=quo格式的数据。

按键的数量和顺序可以逐行改变。

我需要foo从 Linux 命令行(我使用 bash 作为 shell)处理此文件并提取密钥的值。

无需安装的最有效方法是什么巨大的依赖关系或编写代码?

答案1

这是大量的数据,因此几乎任何命令行解决方案都会很慢。

grep -oP '(?<=\bfoo=)[^;]+' file

答案2

sed -n -e 's/^foo=\([^;][^;]*\).*/\1/p'  -e 's/.*;foo=\([^;][^;]*\).*/\1/p' yourGBfile

-n 选项,不打印所有行

-e‘脚本’

如果一行以 开头,则第一个 -e 脚本匹配foo= ,而第二个 -e 脚本匹配foo=分号后面的 。

[^;]表示不匹配任何分号,并且[^;][^;]*表示至少一个非分号(不会找到空值!),这可以有效地提取等号和分号之间的值。

括号中是一个用 引用的位置字符串\1

答案3

您还可以尝试 perl 解决方案,它可能更快: perl -nle 'print "$1" if /foo=(.*);/' filename.txt

相关内容