慶典主需要...獲取行計數 - AWK,sed的,用grep
從多個日期比較mysqldumps,我需要SQL GROUP BY,ORDER BY功能......,但是,命令行...
使用grep/sed/awk我需要查找所有INSERT語句,然後導出每個表名的行數。我真的很喜歡每表名太字節數...
一個典型的行看起來是這樣的:
INSERT INTO `admin_rule` ...
匹配的INSERT,然後匹配``表名,通過獨特的表名
計數慶典主需要...獲取行計數 - AWK,sed的,用grep
從多個日期比較mysqldumps,我需要SQL GROUP BY,ORDER BY功能......,但是,命令行...
使用grep/sed/awk我需要查找所有INSERT語句,然後導出每個表名的行數。我真的很喜歡每表名太字節數...
一個典型的行看起來是這樣的:
INSERT INTO `admin_rule` ...
匹配的INSERT,然後匹配``表名,通過獨特的表名
計數這個怎麼樣小AWK片段:
BEGIN { FS="`" }
/^INSERT/ { count[$2]+=1; bytes[$2]+=length($0) }
END { for(table in count) print table "," count[table] "," bytes[table]; }
編輯:測試用例這裏:
$ cat test.sql
INSERT INTO `t1` VALUES('a', 12, 'b');
INSERT INTO `t2` VALUES('test', 'whatever', 3.14);
INSERT INTO `t3` VALUES(1, 2, 3, 4);
INSERT INTO `t2` VALUES('yay', 'works', NULL);
INSERT INTO `t2` VALUES(NULL, 'something' 2.71);
INSERT INTO `t3` VALUES(5, 6, 7, 8);
INSERT INTO `t5` VALUES('beta', 'gamma');
INSERT INTO `t6` VALUES('this', 'is', 'table', 'six');
$ awk -f t.awk <test.sql
t5,1,41
t6,1,54
t1,1,38
t2,3,144
t3,2,72
看起來這是獲得第一個或最後一個值,但不能彙總所有記錄:如: catalog_category_flat_store_1,1,3457 core_store,1196 catalog_category_flat_store_2,1,3459 shipping_matrixrate,1,14765 ......但感謝您的答覆! – 2010-12-21 00:54:25
是的,樣本數據會很好。它確實爲我的虛擬數據添加它們: $ cat test.sql INSERT INTO 't1' VALUES('a', 12, 'b'); INSERT INTO 't2' VALUES('test', 'whatever', 3.14); INSERT INTO 't3' VALUES(1, 2, 3, 4); INSERT INTO 't2' VALUES('yay', 'works', NULL); INSERT INTO 't2' VALUES(NULL, 'something' 2.71); INSERT INTO 't3' VALUES(5, 6, 7, 8); INSERT INTO 't5' VALUES('beta', 'gamma'); INSERT INTO 't6' VALUES('this', 'is', 'table', 'six'); $ awk -f t.awk
我猜「每個表名的字節數」意味着實際數據而不是整個SQL語句的長度。在END子句中做一個'asort()',這樣你就有'ORDER BY'。 – 2010-12-21 01:45:29
更全面的輸入/輸出描述會爲您提供更好的答案。例如說一個3-5個輸入條目的列表以及你期望看到的輸出。 – SiegeX 2010-12-21 01:10:30