相关疑难解决方法(0)

'real','user'和'sys'在time(1)的输出中意味着什么?

$ time foo
real        0m0.003s
user        0m0.000s
sys         0m0.004s
$
Run Code Online (Sandbox Code Playgroud)

"真实","用户"和"系统"在时间输出中意味着什么?

在对我的应用进行基准测试时哪一个有意义?

unix time benchmarking

1622
推荐指数
6
解决办法
42万
查看次数

在一个文件中找到不在另一个文件中的行的快速方法?

我有两个大文件(文件名集).每个文件大约有30,000行.我试图找到一种快速查找file1中不存在于file2中的行的方法.

例如,如果这是file1:

line1
line2
line3
Run Code Online (Sandbox Code Playgroud)

这是file2:

line1
line4
line5
Run Code Online (Sandbox Code Playgroud)

然后我的结果/输出应该是:

line2
line3
Run Code Online (Sandbox Code Playgroud)

这有效:

grep -v -f file2 file1

但是在我的大文件上使用它时非常非常慢.

我怀疑有一个很好的方法来使用diff(),但输出应该只是行,没有别的,我似乎无法找到一个开关.

任何人都可以帮我找到一个快速的方法,使用bash和基本的Linux二进制文件?

编辑:为了跟进我自己的问题,这是我到目前为止使用diff()找到的最好方法:

diff file2 file1 | grep '^>' | sed 's/^>\ //'
Run Code Online (Sandbox Code Playgroud)

当然,必须有更好的方法吗?

bash diff grep find

199
推荐指数
9
解决办法
12万
查看次数

最快的grep

我想知道是否有任何提示grep尽可能快.我有一个相当大的文本文件库,以最快的方式搜索.我把它们全都小写了,这样我就可以摆脱-i选择了.这使得搜索速度更快.

此外,我发现-F并且-P模式比默认模式更快.当搜索字符串不是正则表达式(只是纯文本)时,我使用前者,后者如果涉及正则表达式.

有没有人有加速的经验grep?也许用一些特定的标志(我在Linux CentOS上)从头开始编译它,以某种方式组织文件或者以某种方式使搜索并行?

unix bash grep

80
推荐指数
4
解决办法
7万
查看次数

grep针对大文件的大型列表

我目前正在尝试grep针对更大的csv文件(3.000.000行)的大量ID(~5000).

我想要所有csv行,包含id文件中的id.

我天真的做法是:

cat the_ids.txt | while read line
do
  cat huge.csv | grep $line >> output_file
done
Run Code Online (Sandbox Code Playgroud)

但这需要永远!

有没有更有效的方法解决这个问题?

unix linux shell awk grep

23
推荐指数
3
解决办法
3万
查看次数

在非常大的文件中快速搜索字符串

在包含字符串的文件中搜索行的最快方法是什么.我有一个包含要搜索的字符串的文件.这个小文件(smallF)包含大约50,000行,看起来像:

stringToSearch1
stringToSearch2
stringToSearch3

我必须在一个更大的文件中搜索所有这些字符串(大约1亿行).如果此较大文件中的任何行包含搜索字符串,则会打印该行.

到目前为止,我提出的最佳方法是

grep -F -f smallF largeF
Run Code Online (Sandbox Code Playgroud)

但这不是很快.在smallF中只有100个搜索字符串,大约需要4分钟.对于超过50,000个搜索字符串,将花费大量时间.

有更有效的方法吗?

linux bash grep

23
推荐指数
2
解决办法
2万
查看次数

在大型数据集上使用grep或fgrep进行非常慢的循环

我正在尝试做一些非常简单的事情; 来自列表的grep,对于字符串的完全匹配,对目录中的文件:

#try grep each line from the files
for i in $(cat /data/datafile); do 
LOOK=$(echo $i);
fgrep -r $LOOK /data/filestosearch >>/data/output.txt
done
Run Code Online (Sandbox Code Playgroud)

与grep相匹配的文件有2000万行,目录有大约600个文件,总共有大约40万行我可以看到这将是缓慢但我们估计需要7年.即使我在HPC上使用300个内核按文件分割作业进行搜索,看起来可能需要一周时间.

有类似的问题:

循环运行很慢 :

非常缓慢的foreach循环

虽然它们位于不同的平台上,但我想可能还有其他可能对我有所帮助.或fgrep可能更快(但我现在正在测试它似乎有点慢)任何人都可以看到更快的方法吗?先感谢您

bash grep loops

6
推荐指数
2
解决办法
3676
查看次数

如何从另一个文件中查找包含任何字符串的行?

我有 2 个 csv 文件。文件 A,具有多列。文件 B,只有一栏。例如。:

文件A:

chr1 100000 100022 A C GeneX
chr2 200000 200033 X GeneY
chr3 300000 300055 G A GeneZ
Run Code Online (Sandbox Code Playgroud)

文件B:

GeneY
GeneZ
Run Code Online (Sandbox Code Playgroud)

我希望我的输出是:

chr2 200000 200033 X GeneY
chr3 300000 300055 G A GeneZ
Run Code Online (Sandbox Code Playgroud)

我尝试过使用grep(会崩溃)和其他。
我确信这个问题一定有一个非常简单的答案,但我只是看不到!

shell grep intersect

5
推荐指数
1
解决办法
3839
查看次数

awk比较两个文件

我试图比较两个文件,并希望打印匹配的行...文件中的行将是唯一的

FILE1.TXT

GERMANY
FRANCE
UK
POLLAND
Run Code Online (Sandbox Code Playgroud)

FILE2.TXT

POLLAND 
GERMANY
Run Code Online (Sandbox Code Playgroud)

我试着用下面的命令

awk 'BEGIN { FS="\n" } ; NR==FNR{A[$1]++;NEXT}A[$1]' File1.txt File2.txt
Run Code Online (Sandbox Code Playgroud)

但它打印匹配记录两次,我希望它们打印一次......

UPDATE

预期产出

POLLAND 
GERMANY
Run Code Online (Sandbox Code Playgroud)

电流输出

POLLAND 
GERMANY
POLLAND 
GERMANY
Run Code Online (Sandbox Code Playgroud)

bash shell awk

4
推荐指数
1
解决办法
3万
查看次数

grep -vf对大文件来说太慢了

我正在尝试使用存储在文件filter.txt中的模式从data.txt过滤数据.如下,

grep -v -f filter.txt data.txt > op.txt
Run Code Online (Sandbox Code Playgroud)

对于filter.txt中的30-40K行和data.txt中的~300K行,这个grep需要10-15分钟.

有没有办法加快这个?

data.txt中

data1
data2
data3
Run Code Online (Sandbox Code Playgroud)

filter.txt

data1
Run Code Online (Sandbox Code Playgroud)

op.txt

data2
data3
Run Code Online (Sandbox Code Playgroud)

这适用于codeforester提供的解决方案,但是当filter.txt为空时失败.

bash shell performance awk grep

4
推荐指数
1
解决办法
779
查看次数

标签 统计

grep ×7

bash ×6

shell ×4

awk ×3

unix ×3

linux ×2

benchmarking ×1

diff ×1

find ×1

intersect ×1

loops ×1

performance ×1

time ×1