3 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
head
tail
sed
sed 'NUMq;d' file
NUM
sed '10q;d' file
file
.
NUMq
NUM
.
d
q
NUM
sed "${NUM}q;d" file

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
設(shè)置
我只需要提取行的一個(gè)子集就可以對(duì)數(shù)據(jù)做任何有用的事情。 閱讀每一行,直到我關(guān)心的值,將需要很長(zhǎng)的時(shí)間。 如果解決方案讀取了我關(guān)心的行,并繼續(xù)讀取文件的其余部分,那么它將浪費(fèi)時(shí)間讀取將近30億個(gè)不相關(guān)的行,并且花費(fèi)比需要長(zhǎng)6倍的時(shí)間。
time
基線
head
tail
$ time head -50000000 myfile.ascii | tail -1pgm_icnt = 0real 1m15.321s
切
$ time cut -f50000000 -d$'\n' myfile.ascii pgm_icnt = 0real 5m12.156s
AWK
exit
$ time awk 'NR == 50000000 {print; exit}' myfile.ascii pgm_icnt = 0real 1m16.583s
Perl
$ time perl -wnl -e '$.== 50000000 && print && exit;' myfile.ascii pgm_icnt = 0real 1m13.146s
SED
$ time sed "50000000q;d" myfile.ascii pgm_icnt = 0real 1m12.705s
地圖檔
結(jié)語
head
tail
sed
% = (runtime/baseline - 1) * 100
)
第50,000,000行
00:01:12.705 (-00:00:02.616 = -3.47%)
sed
00:01:13.146 (-00:00:02.175 = -2.89%)
perl
00:01:15.321 (+00:00:00.000 = +0.00%)
head|tail
00:01:16.583 (+00:00:01.262 = +1.68%)
awk
00:05:12.156 (+00:03:56.835 = +314.43%)
cut
第500,000,000行
00:12:07.050 (-00:00:26.160)
sed
00:12:11.460 (-00:00:21.750)
perl
00:12:33.210 (+00:00:00.000)
head|tail
00:12:45.830 (+00:00:12.620)
awk
00:52:01.560 (+00:40:31.650)
cut
第3,338,559,320行
01:20:54.599 (-00:03:05.327)
sed
01:21:24.045 (-00:02:25.227)
perl
01:23:49.273 (+00:00:00.000)
head|tail
01:25:13.548 (+00:02:35.735)
awk
05:47:23.026 (+04:24:26.246)
cut
添加回答
舉報(bào)