gpt4 book ai didi

bash - 在同一行使用 grep 打印多个正则表达式匹配项

转载 作者:行者123 更新时间:2023-11-29 09:39:26 24 4
gpt4 key购买 nike

我正在尝试使用 grep 匹配包括整数和小数在内的所有数字,并在同一行上打印匹配项(以便更轻松地使用 gnuplot 进行绘图)。例如,

echo "bench-100-net-buffering1000.out:Throughput: 3212.97" | grep -E -o '\d+(\.\d+)?'

打印

100
1000
3212.97

但是我如何像下面这样在同一行中获取所有这些内容呢?

100  1000  3212.97

编者注:问题的原始形式仅使用 \d+ 作为正则表达式,这反射(reflect)在一些较旧的答案中。

最终,我希望它能处理多个输入文件,例如:

grep Throughput *.out | grep -E -o '\d+(\.\d+)?'

应该打印

100  1000  3212.97
200 3000 5444.77
300 5000 6769.32

最佳答案

所有这些解决方案似乎都过于复杂。提出的一个不是特别有效但有效:

while read -r line
do
echo $line | grep -o "PATTERN" | tr "\n" " " ; echo
done < grep.txt

它的作用:

1) 分别从文件 grep.txt 中读取每一行,然后对模式进行 greps。这允许你有多种模式,你不受任何特定数字或非常具体的正则表达式的限制

2) 然后用 tr 删除所有不必要的换行符,将它们转换为空格(对于具有任意数量模式的每个特定行,而不是整个文件)

3) 最后 echo 命令建立移动到下一行

您最终得到的是 grep.txt 中同一行的模式,完全符合要求。

关于bash - 在同一行使用 grep 打印多个正则表达式匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43234244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com