shell 统计常用

1. 目的

数据统计中常用的shell命令
目标用户: shell小白

1.1 样例文本

  • file1
级别,地区,企业级别,企业数量
1,北京,A,1
1,上海,B,2
0,广东,C,3
0,河北,D,4
2,南京,E,5
0,河北,F,6
1,北京,G,7
1,上海,H,8
2,南京,I,9
0,云南,J,10
2,石家庄,A,10
3,秦皇岛,B,20
2,石家庄,C,30
3,邢台,D,40
0,广东,E,50
1,北京,F,60
2,石家庄,G,70
3,邯郸,H,80
3,新乡,I,90
0,广东,J,100
0,广东,J,1000

1.2 命令

参考: grep详解
参考: cut命令详解
参考: sed命令详解
参考: awk语言详解

2.场景

2.1 查找

  • 找到包含"XX"的行
# 场景一: 找到"北京"的行
# 方法1:
cat file1 | grep 北京
# 方法2: 
grep 北京 file1

# 场景二: 找到包含"北京"或者"南京"的行
# 方法1:
cat file1 | grep -E "北京|南京"
# 方法2:
grep -E "北京|南京" file1

# 场景三: 找到不包含北京的行
grep -v 北京 file1

# 场景四: 找到不包含北京和南京的行
grep -vE "(北京|南京)" file1

# 注意
grep -vE "[北京|南京]" file1  # 是指包含“北”,“京”,“|”,“南”,“京”这四个字符的行
  • 按行查找
# 场景1: 查找并打印出3-6行
sed -n '3,6p' file1 # -n表示打印查找匹配的结果, 如果不加会打印整个file1
  • 按列查找
# 场景1: 查找按","分割的第2列
方法一: 
cut -d','    -f2  file1 
方法二: awk难度稍高, 可跳过
awk -F','  '{print $1}'  file1 # $1表示按逗号分割的第1列, $0比较特殊表示整行
# 场景2: 查找按","分割的第2-3列
cut -d','   -f2-3 file1
# 场景3: 某列值满足某种条件的行: 如大于N的行
awk -F','  '$1>1{print $0}'   file1  # 输出第1列满足大于1的行

2.2 替换

  • sed命令
# 场景1: 替换文件全部的A词变为B词
sed 's/hello/hi/g' file1
# 场景2: 替换以A开头,替换为B
sed 's/^3/B/g' file1   
sed 's/$3/B/g' file1    # 每行以3结尾替换为B

2.3 删除

# 场景1: 删除文件第N行
# 方法1: 结果保存到file2(注意: file1没有变化)
sed '1d' file1 > file2 # 删除第1行
sed '$d' file1 > file2 # 删除最后1行
# 方法2: 直接将file1中第1行删除(注意: file1已变化)
sed -i '1d' file1

# 场景2: 删除第n到m行
sed '2,4d' file1 > file2  # 删除2至4行,保持到file2, 其中file1不变
sed -i '2,4d' file1  # 直接删除file1中2至4行,file1已改变

# 场景3: 删除包含"XX"的行, 结果保存到file2
# 方法1: 结果保存到file2(注意: file1没有变化)
sed /北京/d  file1 > file2
# 方法2: 直接将file1中包含"XX"的行删除(注意: file1已变化)
sed -i /北京/d  file1

2.3 排序

# 场景一: 单列排序, file1第4列倒序排列
cat file1 | sort -k4nr -t ',' 
# 场景二: 多列排序, file1第1列倒序排列, 第2列倒序排
cat file1 | sort -k1nr -k4nr -t ',' 
# 分隔符: tab, 须加$符号
cat file1 | sort -k1nr -k4nr -t $'\t' 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343