我有一个很大的(几十 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