首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

命令行上数据科学第二版 五、清理数据

大多数命令行工具只能处理一种或两种格式,因此将数据从一种格式转换成另一种格式非常重要。 一旦数据采用了所需格式,仍然可能会出现丢失、不一致、奇怪字符或不必要部分等问题。...5.1 概述 在本章,您将学习如何: 将数据从一种格式转换成另一种格式 将 SQL 查询直接应用于 CSV 过滤一 提取和替换 拆分、合并和提取列 合并多个文件 本章从以下文件开始: $ cd /...我用来清理纯文本命令行工具,比如tr和grep,并不总是适用于 CSV。原因是这些命令行工具没有标题、主体和列概念。如果您想使用grep过滤,但总是在输出包含标题,该怎么办?...过滤 CSV 文件与过滤纯文本文件之间区别在于,您可能只希望根据特定列进行过滤。...这些信息大部分都以表格形式排列,这些表格可以被视为数据集。例如,这个页面包含一个国家和地区列表,以及它们边界长度、面积和两者之间比例。 假设您对分析这些数据感兴趣。

2.7K30

史上最全 Linux Shell 文本处理工具集锦,快收藏!

match_patten file // 默认访问匹配 常用参数: -o 只输出匹配文本行 VS -v 只输出没有匹配文本行 -c 统计文件包含文本次数 grep -c "text" filename...'s/text/replace_text/g' file 默认替换后,输出替换后内容,如果需要直接替换原文件,使用-i: seg -i 's/text/repalce_text/g' file 移除空白...< 5' #行号小于5awk 'NR==1,NR==4 {print}' file #行号等于1和4打印出来awk '/linux/' #包含linux文本(可以用正则表达式来指定,超级强大)awk.../linux/' #不包含linux文本 设置定界符 使用-F来设置定界符(默认为空格) awk -F: '{print $NF}' /etc/passwd 读取命令输出 使用getline,将外部...: seq 10 | awk '{printf "->%4s ", $1}' 迭代文件、单词和字符 1.

4K50
您找到你想要的搜索结果了吗?
是的
没有找到

Linux Shell 文本处理工具集锦

match_patten file // 默认访问匹配 常用参数 -o 只输出匹配文本行 VS -v 只输出没有匹配文本行 -c 统计文件包含文本次数 grep -c "text" filename...] [example] 子串匹配标记 第一个匹配括号内容使用标记 \1 来引用 sed 's/hello\([0-9]\)/\1/' 双引号求值 sed通常用单引号来引用;也可使用双引号,使用双引号后.../'#包含linux文本(可以用正则表达式来指定,超级强大) awk '!.../linux/' #不包含linux文本 设置定界符 使用-F来设置定界符(默认为空格) awk -F: '{print $NF}' /etc/passwd 读取命令输出 使用getline,将外部...eg: seq 10 | awk '{printf "->%4s\n", $1}' 迭代文件、单词和字符 迭代文件每一 while 循环法 while read line; do echo

3.2K70

Linux文本处理工具,看这篇就够了。

match_patten file // 默认访问匹配 常用参数: -o 只输出匹配文本行 VS -v 只输出没有匹配文本行 -c 统计文件包含文本次数 grep -c "text" filename...'s/text/replace_text/g' file 默认替换后,输出替换后内容,如果需要直接替换原文件,使用-i: seg -i 's/text/repalce_text/g' file 移除空白...< 5' #行号小于5awk 'NR==1,NR==4 {print}' file #行号等于1和4打印出来awk '/linux/' #包含linux文本(可以用正则表达式来指定,超级强大)awk.../linux/' #不包含linux文本 设置定界符 使用-F来设置定界符(默认为空格) awk -F: '{print $NF}' /etc/passwd 读取命令输出 使用getline,将外部...: seq 10 | awk '{printf "->%4s ", $1}' 迭代文件、单词和字符 1.

4.4K10

sed 使用教程 - 通读篇(30分钟入门系列)

导言 和上篇 awk 分享一样,作为通读性分享,不想引入太过复杂东西,依然从日常工作碰到 80% 需求出发,重点阐述最重点部门,工作原理等,普及一些对sed意识,明白能帮我们解决哪些问题。...比如去掉html标签,提取有用信息; 1....,使用该参数,我们可以指定多个命令 -f 指定包含要执行命令脚本文件 2....从一个简单替换开始 命令格式 [address1[,address2]]s/pattern/replacement/[flags] sed在匹配前可以指定针对哪些,这些指定你可以直接使用数字,也可以通过匹配得到...输出多行第一 P P命令用于输出N命令创建多行文本模式空间中第一,也就是说读进来两,仅输出第一

4.1K240

awk、sed、grep

NR:记录行号 OFS:输出字段分隔符,默认与输入字段分隔符一致。...ORS:输出记录分隔符(默认是一个换行符) $n:当前记录第n个字段,字段间由FS分隔 $0:完整输入记录 ARGV:包含命令行参数数组 ARGC:命令行参数数目 基本用法 案例一...,n2 之间!...应用案例 grep "被查找字符串" 文件名 grep test *file # 在当前目录,查找后缀有 file 字样文件包含 test 字符串文件 grep -v test *test*...#查找文件名包含 test 文件包含test ,此时,使用命令为 grep –e "正则表达式" 文件名 grep 除了可以查找单个文件匹配模式,也可以在目录包含特定字符文件查找匹配模式

1.2K30

linux实战(一)

-l:查询多文件时只输出包含匹配字符文件名。 -n:显示匹配及行号。 -s:不显示不存在或无匹配文本错误信息。 -v:显示不包含匹配文本所有。...实例 $ ls -l | grep '^a' 通过管道过滤ls -l输出内容,只显示以a开头。 $ grep 'test' d* 显示所有以d开头文件包含test。...保存已匹配字符      1,20s/youyouself/\1r/  标记元字符之间模式,并将其保存为标签1,之后可以使用\1来引用它。最多可以定义9个标签,从左边开始编号,最左边是第一个。...$ sed -n '5,/^test/p' example 打印从第五开始到第一个包含以test开始之间所有。...IGNORECASE 如果为真,则进行忽略大小写匹配。 NF 当前记录字段数。 NR 当前记录数。 OFMT 数字输出格式(默认是%.6g)。

2.2K10

linux运维命令梳理(三)

例如: sed '2,5d' datafile #删除第二到第五 sed '/My/,/You/d' datafile #删除包含"My"包含"You"之间 sed '/My/,10d...input-file(s) 是待处理文件。 在awk,文件每一,由域分隔符分开每一项称为一个域。通常,在不指名-F域分隔符情况下,默认域分隔符是空格。...数组 因为awk数组下标可以是数字和字母,数组下标通常被称为关键字(key)。和关键字都存储在内部一张针对key/value应用hash表格里。...-l:查询多文件时只输出包含匹配字符文件名。 -n:显示匹配及 行号。 -s:不显示不存在或无匹配文本错误信息。 -v:显示不包含匹配文本所有。...#输出所有不包含48 (4)显示非匹配 grep -vn "48" data.doc #输出所有不包含48 (5)大小写敏感 grep -i "ab" data.doc

7.9K81

Linux三剑客(grep、sed、awk

-w 匹配整个单词 -E 使用ERE,相当于egrep -F 相当于fgrep,不支持正则表达式 举例子: 1、查找文件内容包含root行数 2、查找文件内容不包含root 3、查找以s开头...模式空间中匹配取反处理 s///:查找替换,支持使用其它分隔符,s@@@,s### 替换标记: g 行内全局替换 p 显示替换成功 w /PATH/TO/SOMEFILE 将替换成功保存至文件...举例子: 1、打印出文件第二 2、打印出2-5内容 3、将文件root全部替换为abc 直接修改读取文件内容,而不是输出到终端。...-v var=value 自定义变量 分割符、域和记录 awk执行时,由分隔符分隔字段(域)标记1,1,2..n称为域标识,n称为域标识,0为所有域。...注意:以上都是内置变量,在引用时不需要前面加$,每新建一个变量,都需要加个-v,与变量名之间有无空格都可以,变量可以在引用之后再声明,但那一输出输出空行。

1.4K10

linux文本处理三剑客之awk

OFS Output Field Separator 输出字段分隔符,(awk显示每一列时候,每一列之间通过什么分割,默认是空格) awk -F: -v OFS=: '{print $NF,$2,...$3,$4,$5,$6,$1}' 文件名 4.3与列 名词 awk叫法 一些说明 记录record 每一默认通过回车分割 列 字段域field 每一列默认通过空格分割 awk中行和列结束标记都是可以修改...= 2)取列 -F 指定分隔符 指定每一列结束标记(默认是空格,连续空格,tab键) $数字 取出某一列,注意:在awk$内容一个意思 表示取出某一列 $0整行内容, {print xxx}...pattern{action}' ​1)比较表达式-参考上面取行部分 2)正则: 支持扩展正则 awk可以精确到某一列,某一包含/不包含.....内容。...~不包含 正则 awk正则 ^表示以....开头 某一列开头 $3~/^oldoy/ $表示以.....结尾 某一列结尾$4~/lidao$/ ^$表示空行 某一列是空 很少用

76500

awk详解 数组

第1章 awk命令基础 1.1 awk命令执行过程 1、如果BEGIN 区块存在,awk执行它指定动作。 2、awk从输入文件读取一,称为一条输入记录。...sep NR 记录号 行号 number of record RS 每一分隔符(每一结束标记) $数字 取某一列 $0 取出这一 1.4.1 $NF使用 $NF 表示最后一列,(NF...号码 最后三列是三次捐款数量 1.5.2 显示出第二列包含X 。...       gsub(r, s [, t])   r  /找谁/  s  "替换成什么"  [] 替换那个部分 表示为: gsub(/找谁/,"替换成什么",替换那个部分) 1.7.2 替换文本内容...,在awk包含可以使用! 表示。 $NF       表示这个文件最后一列 -F   将分隔符指定为: [root@znix ~]# awk -F: '$NF!

1.6K00

18 个开箱即用 Shell 脚本,拿好了~

a.txt|awk '{print 1}'` md5_b=`grep -w "f" /tmp/md5_b.txt|awk '{print 1}'` #当文件存在时,如果md5不一致则输出文件改变结果...#容清空,但不删除文件,其他时间则只统计各个文件大小,一个文件一输出到以时#间和日期命名文件,需要考虑目标目录下二级、三级等子目录文件 ###########################...}'` sum=0 #文档每一可能存在空格,因此不能直接用文档内容进行遍历 for i in `seq 1n`do #输出用变量表示时,需要用双引号 line=`sed -n "i"p a.txt...line-numbers"># rename article bbs *.html 把一个文档前五包含字母删掉,同时删除6到10包含所有字母 1)准备测试文件,文件名为2.txt 第1.../bin/bash ############################################################### 把一个文档前五包含字母删掉,同时删除6到10包含所有字母

33710

《Linux与unix Shell编程指南》 总结

sed、awk和grep都很适合用管道,特别是在简单命令。在下面的例子, who命令输出通过管道传递给awk命令,以便只显示用户名和所在终端。...-l 查询多文件时只输出包含匹配字符文件名。 -n 显示匹配及行号。 -s 不显示不存在或无匹配文本错误信息。 -v 显示不包含匹配文本所有。...Number 变量指定将多少单元写入标准输出。 Number 变量可以是正或负整数。如果前面有 +(加号),从文件开头指定单元数开始将文件写到标准输出。...如果前面有 -(减号),则从文件末尾指定单元数开始将文件写到标准输出。如果前面没有 +(加号)或 -(减号),那么从文件末尾指定单元号开始读取文件。...# 这样在输出文本每一后面将有且只有一空行。

5.5K30

18 个开箱即用 Shell 脚本,拿好了~

_a.txt|awk '{print 1}'`md5_b=`grep -w "$f" /tmp/md5_b.txt|awk '{print 1}'`#当文件存在时,如果md5不一致则输出文件改变结果...#容清空,但不删除文件,其他时间则只统计各个文件大小,一个文件一输出到以时#间和日期命名文件,需要考虑目标目录下二级、三级等子目录文件############################...=#文档每一可能存在空格,因此不能直接用文档内容进行遍历for i in `seq 1 $n`do#输出用变量表示时,需要用双引号line=`sed -n "$i"p a.txt`#wc -L选项...-maxdepth 1 -name "*html"); do mv $file bbs_${file#*_}done方法3: # rename article bbs *.html 把一个文档前五包含字母删掉.../bin/bash###############################################################把一个文档前五包含字母删掉,同时删除6到10包含所有字母

54120

大幅提效 | 18个一线工作中常用 Shell 脚本(纯干货)

#容清空,但不删除文件,其他时间则只统计各个文件大小,一个文件一输出到以时#间和日期命名文件,需要考虑目标目录下二级、三级等子目录文件 #########################...'{print $1}'` sum=0 #文档每一可能存在空格,因此不能直接用文档内容进行遍历 for i in `seq 1 $n`do #输出用变量表示时,需要用双引号...把一个文档前五包含字母删掉,同时删除6到10包含所有字母 1)准备测试文件,文件名为2.txt 第11234567不包含字母 第256789BBBBBB.../bin/bash ############################################################### 把一个文档前五包含字母删掉,同时删除6...,可将输出结果写入临时文件,再替换2.txt或者使用-i选项 10、统计当前目录以.html结尾文件总大 方法1: # find .

37020

提效篇-18个一线工作中常用Shell脚本(纯干货)

" /tmp/md5_a.txt|awk '{print 1}'` md5_b=`grep -w "$f" /tmp/md5_b.txt|awk '{print 1}'` #当文件存在时,如果md5不一致则输出文件改变结果...#容清空,但不删除文件,其他时间则只统计各个文件大小,一个文件一输出到以时#间和日期命名文件,需要考虑目标目录下二级、三级等子目录文件 ###########################...}'` sum=0 #文档每一可能存在空格,因此不能直接用文档内容进行遍历 for i in `seq 1 $n`do #输出用变量表示时,需要用双引号 line=`sed -n "$i"p a.txt...-maxdepth 1 -name "*html"); do mv $file bbs_${file#*_}done 方法3: # rename article bbs *.html 把一个文档前五包含字母删掉.../bin/bash ############################################################### 把一个文档前五包含字母删掉,同时删除6到10包含所有字母

1.1K20

处理Apache日志Bash脚本

sed命令是一个处理行文本编辑器,'s/^ *//g'是一个正则表达式(^和*之间有一个空格),表示将连续空格替换为空(即删除)。接着,将排序结果重定向到文件www-01.result。...为了简洁,上面的例子每一组只包含两条记录,实际上每一组都包含31条记录(分别代表当月每天访问次数)。 (9)log.awk脚本 为了将31天访问次数加总,我动了很多脑筋。...=0){ #判断是否为奇数字段         sum += $i #如果是的话,累加这些字段       }     }     print sum,$2 #输出总和,后面跟上对应网址...由于输入文件之中,每一包含两个字段,第一个是访问数,第二个是网址,所以这里做一个条件判断,只要是奇数字段就累加,偶数字段则一律跳过。最后,每个记录输出一个累加值和网址,它们之间用空格分割。...#输出字,表示开始处理当前文件     awk '$9 == 200 {print $7}' $i|grep -i '^/blog/2011/.*\.html$'|sort|uniq -c|sed

1.2K50
领券