linux学习--sed,sort,uniq,join,cut,paste,split
==============================sed==========================
1、调用sed
 调用s e d有三种方式:在命令行键入命令;将s e d命令插入脚本文件,然后调用s e d;将s e d
命令插入脚本文件,并使s e d脚本可执行。
 使用s e d命令行格式为:
  sed [选项] s e d命令  输入文件。
 记住在命令行使用s e d命令时,实际命令要加单引号。s e d也允许加双引号
 
 使用s e d脚本文件,格式为:
  sed [选项] -f sed脚本文件输入文件
 
 要使用第一行具有s e d命令解释器的s e d脚本文件,其格式为
  sed脚本文件 [选项] 输入文件
 
 sed选项如下:
 n 不打印;s e d不写编辑行到标准输出,缺省为打印所有行(编辑和未编辑)。p命令可以
 用来打印编辑行。
 c 下一命令是编辑命令。使用多项编辑时加入此选项。如果只用到一条s e d命令,
 此选项无用,但指定它也没有关系。
 f 如果正在调用s e d脚本文件,使用此选项。此选项通知s e d一个脚本文件支持所有的s e d
 命令,例如:sed -f myscript.sed input_file,这里m y s c r i p t . s e d即为支持s e d命令的文件。
2、使用sed在文件中查询文本的方式
 s e d浏览输入文件时,缺省从第一行开始,有两种方式定位文本:
 1) 使用行号,可以是一个简单数字,或是一个行号范围。
 2) 使用正则表达式
    使用s e d在文件中定位文本的方式
  x x为一行号,如1
  x , y 表示行号范围从x到y,如2,5表示从第2行到第5行
  / p a t t e r n / 查询包含模式的行。例如/ d i s k /或/[a-z]/
  / p a t t e r n / p a t t e r n / 查询包含两个模式的行。例如/ d i s k / d i s k s /
  p a t t e r n / , x 在给定行号上查询包含模式的行。如/ r i b b o n / , 3
  x , / p a t t e r n / 通过行号和模式查询匹配行。3 . / v d u /
  x , y ! 查询不包含指定行号x和y的行。1 , 2 !
3、基本sed编辑命令
    sed编辑命令
  p 打印匹配行
  = 显示文件行号
  a \ 在定位行号后附加新文本信息
  i \ 在定位行号后插入新文本信息
  d 删除定位行
  c \ 用新文本替换定位文本
  s 使用替换模式替换相应模式
  r 从另一个文件中读文本
  w 写文本到一个文件
  q 第一个模式匹配完成后推出或立即推出
  l 显示与八进制A S C I I代码等价的控制字符
  { } 在定位行执行的命令组
  n 从另一个文件中读文本下一行,并附加在下一行
  g 将模式2粘贴到/pattern n/
  y 传送字符
  n 延续到下一输入行;允许跨行的
4、sed和正则表达式
  sed识别任何基本正则表达式和模式及其行匹配规则
5、基本sed编程举例
  使用p(rint)显示行:
  p r i n t命令格式为[ a d d r e s s [,a d d r e s s ] P。显示文本行必须提供s e d命令行号。
   sed -n '2p' quote.txt
  显示从2到4行
   sed -n '2,4p' url_access_detail.txt
 
  打印模式:
   sed -n '/1028f/p' url_access_detail.txt
   sed -n '/\/\?1028f/p' url_access_detail.txt
  
  使用模式和行号进行查询:
   只在第4行查询
    sed -n '4,/\/\?1028f/'p url_access_detail.txt
   
  显示整个文件:
   只需将行范围设为第一行到最后一行1 , $。$意为最后一行:
   sed -n '1,$p' quote.txt
  
  任意字符:
    匹配任意字母,后跟任意字母的0次或多次重复,并以i n g结尾,模式为/ . * i n g /。可以使用
 这个模式查询以i n g结尾的任意单词
   sed -n '/.*ing/'p quote.txt
  
  打印行号:
  要打印行号,使用等号=。打印模式匹配的行号,使用格式/pattern/=。
   sed -e '/music/=' quote.txt
  (不过这些好像在linux里面不支持)
 
  附加文本:
  sed -n  '/1028f/'p  url_access_detail.txt |sed '/h/ a\then haha'
  在前面添加,用i\
  替换,用c\
  删除,用d\
6、替换文本
  替换命令用替换模式替换指定模式,格式为:
   [ a d d r e s s [,address]] s/ pattern-to-find /replacement-pattern/[g p w n]
  s选项通知s e d这是一个替换操作,并查询p a t t e r n - t o - f i n d,成功后用r e p l a c e m e n t - p a t t e r n替
 换它。
  g 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。
  p 缺省s e d将所有被替换行写入标准输出,加p选项将使- n选项无效。- n选项不打印输出
 结果。
  w 文件名使用此选项将输出定向到一个文件。
   sed 's/haha/hehe/g w a.out' quote.txt
  
  使用替换修改字符串:
  如果要附加或修改一个字符串,可以使用( &)命令,&命令保存发现模式以便重新调用
 它,然后把它放在替换字符串里面。这里给出一个修改的设计思路。先给出一个被替换模式,
 然后是一个准备附加在第一个模式后的另一个模式,并且后面带有&,这样修改模式将放在
 匹配模式之前。例如, s e d语句s/nurse/"Hello"&/p 的结果如下
  sed 's/nurse/"Hello" &/p' quote.txt
 比如原来的句子为: The nurse come from china.
 替换后的句子为:  The "Hello" nurse come from china.
7、从文件中读文本
  处理文件时, s e d允许从另一个文件中读文本,并将其文本附加在当前文件。此命令放在
 模式匹配行后,格式为:address r filename
  sed '/companty/r append.txt' quote.txt
8、显示文件中的控制字符
  s e d格式为:
  [ a d d r e s s,[ a d d r e s s ] ] l
  sed '1,$1' quote.txt
  (linux 不支持)
9、处理报文输出
  比如有如下输出:
   Database Size DateCreated
   ----------------------------
   newlog  2289 12/11/2005
   mysql   1909 09/12/2005
  
   (2 row affected)
  
  为了使用上述输出信息做进一步自动处理,需要知道所存数据库名称,为此需执行以下操作:
  1) 使用s / - * / / g删除横线- - - - - -。
  2) 使用/ ^ $ / d删除空行。
  3) 使用$ d删除最后一行
  4) 使用1 d删除第一行。
  5) 使用awk {print $1}打印第一列。
  命令如下,这里使用了c a t,并管道传送结果到s e d命令 
  最后的命令如下:
   cat sql.txt| sed 's/-*//g'|sed '/^$//g'|sed '$d'|sed '1d'|awk '{print $1}'
  
  去除行首数字:
   sed 's/^[0-9]//g' data.txt
  
10、一些常用的处理
  ‘s / \ . $ / / g’ 删除以句点结尾行
  ‘-e /abcd/d’ 删除包含a b c d的行
  ‘s / [ ] [ ] [ ] * / [ ] / g’ 删除一个以上空格,用一个空格代替
  ‘s / ^ [ ] [ ] * / / g’ 删除行首空格
  ‘s / \ . [ ] [ ] * / [ ] / g’ 删除句点后跟两个或更多空格,代之以一个空格
  ‘/ ^ $ / d’ 删除空行
  ‘s / ^ . / / g’ 删除第一个字符
  ‘s /CO L \ ( . . . \ ) / / g’ 删除紧跟C O L的后三个字母
  ‘s / ^ \ / / / g’ 从路径中删除第一个\
  ‘s / [ ] / [ ] / / g’ 删除所有空格并用t a b键替代
  ‘S / ^ [ ] / / g’ 删除行首所有t a b键
  ‘s / [ ] * / / g’ 删除所有t a b键
================================合并与分割==========================
sort uniq join cut paste split
  ================sort用法=====================
 sort命令将许多不同的域按不同的列顺序分类。
1、sort选项
 sort命令的一般格式为:
  sort -cmu -o output_file [other options] +pos1 +pos2 input_files
  下面简要介绍一下s o r t的参数:
  -c 测试文件是否已经分类。
  -m 合并两个分类文件。
  -u 删除所有复制行。
  -o 存储s o r t结果的输出文件名。
  其他选项有:
  -b 使用域进行分类时,忽略第一个空格。
  -n 指定分类是域上的数字分类。
  -t 域分隔符;用非空格或t a b键分隔域。
  -r 对分类次序或比较求逆。
  +n n为域号。使用此域号开始分类。
  n n为域号。在分类比较时忽略此域,一般与+ n一起使用。
  post1 传递到m,n。m为域号,n为开始分类字符数;例如4,6意即以第5域分类,从第7个字符开始。
2、sort启动方式
  缺省情况下, s o r t认为一个空格或一系列空格为分隔符。要加入其他方式分隔,使用- t选项。
  sort执行时,先查看是否为域分隔设置了- t选项,如果设置了,则使用它来将记录分隔成域0、域1等等;
 如果未设置,用空格代替。缺省时s o r t将整个行排序,指定域号的情况例外。
  关于s o r t的一个重要事实是它参照第一个域作为域0,域1是第二个域,等等。
3、文件是否已分类
  sort -c data.txt
4、sort分类求逆
 如果要逆向s o r t结果,使用-r选项。
   sort -t: -r video.txt
5、按指定域分类
 有时需要只按第2域(分类键1)分类。
  sort -t: +1 video.txt
6、数值域分类
 用-n选项。必须用,不然得不到想要的结果。
  sort -t: +3n video.txt
7、唯一性分类
 使用- u选项进行唯一性(不重复)分类以去除重复行。
8、使用k的其他sort方法
 sort还有另外一些方法指定分类键。可以指定k选项。
  sort -t: -k4 video.txt
 
 使用k做分类键排序: 
 可以指定分类键次序。先以第4域,再以第1域分类,命令为-k4 -k1
  sort -t: -k4 -k1 video.txt
9、指定sort序列
 可以指定分类键顺序,也可以使用- n选项指定不使用哪个分类键进行查询。看下面的sort命令:
  sort +0 -2 +3
 该命令意即开始以域0分类,忽略域2,然后再使用域3分类。
10、pos用法
 指定开始分类的域位置的另一种方法是使用如下格式:
  sort  +filed.characterin
 意即从filed开始分类,但是要在此域的第characterin个字符开始。
11、使用head和tail将输出分类
  可以使用h e a d或t a i l查阅任何大的文本文件
  head -200 filename
12、awk使用sort输出结果
13、将两个分类文件合并
  将文件合并前,它们必须已被分类.
  使用-m +0。将这个文件并入已存在的分类文件v i d e o . s o r t,要以名称域进行分类,实际上没有必要加入+ o,但为了保险起见,还是加上的好。
   sort -t: -m +0 video2.txt video.sort
  
   ===================uniq用法====================
  uniq用来从一个文本文件中去除或禁止重复行。一般u n i q假定文件已分类,并且结果正确。
  sort的唯一性选项去除所有重复行,而uniq命令并不这样做。重复行是什么?在uniq里意即持续不断重复出现的行,中间不夹杂任何其他文本.
  命令一般格式:
   uniq -u d c -f inputfile outputfile
  其选项含义:
   -u 只显示不重复行。
   -d 只显示有重复数据行,每种重复行只显示其中一行
   -c 打印每一重复行出现次数。
   -f n为数字,前n个域被忽略。
   一些系统不识别- f选项,这时替代使用- n。
  对特定域进行测试:
  使用- n只测试一行一部分的唯一性。例如- 5意即测试第5域后各域唯一性。域从1开始记数。
 如果忽略第1域,只测试第2域唯一性,使用- n 2,下述文件包含一组数据,其中第2域代表组代码。
   uniq -f2 parts.txt或
   uniq -n2 parts.txt
  ==================join用法(强大呀,像sql里面的join 呢)========================
 join用来将来自两个分类文本文件的行连在一起。
 下面讲述join工作方式。这里有两个文件f i l e 1和f i l e 2,当然已经分类。每个文件里都有一
些元素与另一个文件相关。由于这种关系, join将两个文件连在一起,这有点像修改一个主文
件,使之包含两个文件里的共同元素。
 为有效使用join,需分别将输入文件分类:
 join的格式:
  join [option] file1,file2
  an n 为一数字,用于连接时从文件n中显示不匹配行。例如, -a1显示第一个文件的不匹
 配行,- a2为从第二个文件中显示不匹配行。
  o n.m n为文件号,m为域号。1.3表示只显示文件1第三域,每个n,m必须用逗号分隔,
 如1.3,2.1。
  j n m   n为文件号,m为域号。使用其他域做连接域
  t  域分隔符。用来设置非空格或t a b键的域分隔符。例如,指定冒号做域分隔符- t:
 
 连接域为域0,缺省join删除或去除连接键的第二次重复出现:
   join names.txt town.txt
 1、不匹配连接,下面的例子显示匹配及不匹配域
   join -a1 -a2 names.txt town.txt
  只显示第一个文件中不匹配行:
   join -a1 names.txt town.txt
 2、选择性连接
 使用- o选项选择连接域。例如要创建一个文件仅包含人名及城镇, j o i n执行时需要指定显示域。方式如下:
 使用1 . 1显示第一个文件第一个域,2 . 2显示第二个文件第二个域,其间用逗号分隔。命令为:
   join -o 1.1,2.2 names.txt town.txt
 使用-jn m进行其他域连接,例如用文件1域3和文件2域2做连接键,命令为:
   join -j1 3 -j2 2 names.txt town.txt
 
 ===========================cut用法=========================================
 cut用来从标准输入或文本文件中剪切列或域。剪切文本可以将之粘贴到一个文本文件。
 cut一般格式为:
 cut [options] file1 file2
 下面介绍其可用选项:
 -c list 指定剪切字符数。
 -f field 指定剪切域数。
 -d 指定与空格和t a b键不同的域分隔符。
 -c 用来指定剪切范围,如下所示:
 -c 1,5-7 剪切第1个字符,然后是第5到第7个字符。
 -c1-50 剪切前5 0个字符。
 -f 格式与- c相同。
 -f 1,5 剪切第1域,第5域。
 - f 1,10-12 剪切第1域,第1 0域到第1 2域。
 
 剪切指定域:
 cut命令中剪切各域需用逗号分隔,如剪切域1和3,可以使用:
  cut -d: -f1,3 pers
 
 =========================paste用法==========================================
  cut用来从文本文件或标准输出中抽取数据列或者域,然后再用paste可以将这些数据粘贴
 起来形成相关文件。粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。
  paste将按行将不同文件行信息放在一行。缺省情况下,paste连接时,用空格或t a b键分隔
 新行中不同文本,除非指定- d选项,它将成为域分隔符。
  paste格式为;
   paste -d -s -file1 file2
 选项含义如下:
  -d 指定不同于空格或t a b键的域分隔符。例如用@分隔域,使用- d @。
  -s 将每个文件合并成行而不是按行粘
 
 paste命令管道输入:
 paste命令还有一个很有用的选项( -)。意即对每一个( -),从标准输入中读一次数据。
 使用空格作域分隔符,以一个4列格式显示目录列表。方法如下:
   ls |paste -d":" - - - -
 =========================split用法==========================================
  split用来将大文件分割成小文件。
 
 split -output_file-size input-filename output-filename
 每个文件格式为x [ a a ]到x [ z z ],x为文件名首字母, [ a a ]、[ z z ]为文件名剩余部分顺序字符组合.
   split -5000 url_access_user.txt splitfile本文出自 51CTO.COM技术博客

转载于:https://blog.51cto.com/xianjianyi/263351

sed,sort,uniq,join,cut,paste,split相关推荐

  1. paste shell 分隔符_shell基础11:文件分类、合并和分割(sort,uniq,join,cut,paste,split)

    基本sort 最基本的s o r t方式为sort filename,按第一域进行分类(分类键0).实际上读文件时s o r t操作将行中各域进行比较,这里返回基于第一域s o r t的结果 [sam ...

  2. 文本处理工具命令xargs, sort, uniq, tr, cut, paste, wc等

    1. 计数命令wc wc -l [file]: 输出文件[file]的行数 wc -c [file]: 输出文件[file]的byte(字节)数 wc -m [file]: 输出文件[file]的字符 ...

  3. 【拔刀吧少年】之sort uniq tr cut eval常用命令

    sort uniq tr cut eval 一.排序命令--sort 1.格式 2.常用选项 二.去除重复行操作命令--uniq 1.格式 2.常用选项 3.示例 三.字符转换命令--tr 1.格式 ...

  4. linux 命令行 过滤,Linux常用文本过滤命令(find grep wc awk sed sort uniq split)

    都支持regular expression 1. find-name 按名字查找 -perm 根据权限查找 -ctime –n +m 根据创建时间查找,-n n天内,+n n天之前 -mtime –n ...

  5. 基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od

    awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上.并且可以使用管道, input | awk ''  | output 1.首先要知道形式 awk 'command' fi ...

  6. Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs

    在每个管线后面接的第一个数据必定是『命令』喔!而且这个命令必须要能够接受 standard input 的数据才行,这样的命令才可以是为『管线命令』,例如 less, more, head, tail ...

  7. Linux系统介绍 文本查看、操作、统计命令(head/tail cat/tac less/more • wc sort uniq • cut paste)

    文本查看.操作.统计命令 •head/tail cat/tac less/more •wc sort uniq •cut paste catcat readme.txtcat > filecat ...

  8. shell脚本——grep cut sort uniq tee diff paster tr等小工具的使用方法

    shell脚本的一些小工具的使用方法 grep 语法和选项 实例 cut 语法和选项 实例 sort 语法和选项 实例 uniq 语法和选项 实例 tee 语法和选项 实例 diff 语法和选项 实例 ...

  9. 文本处理命令 cat more less cut wc sort uniq

    1.cat       cat主要功能: 1.一次显示整个文件. cat filename 2.从键盘创建一个文件. cat > filename   (只能创建新文件,不能编辑已有文件). 1 ...

最新文章

  1. python做excel表格代码_python实现跨excel的工作表sheet之间的复制方法
  2. 利用mysql建立随机森林_随机森林算法实例 - osc_4imme0wh的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 为什么安装Android SDK后无法安装flatform?
  4. c# nullable类型有什么用
  5. 你眼泪的味道,我知道!
  6. 面试突击 | Redis 如何从海量数据中查询出某一个 Key?视频版
  7. pycharm git工具与coding.net结合
  8. 安卓案例:在同一Activity里切换Fragment
  9. php链接数据库实行增删查改_最方便最简单的php操作mysql的增删改查方法
  10. 吴恩达机器学习练习2:optimset和fminunc函数
  11. 微信小程序模板(template)小程序免费模板平台
  12. MCGS保存并显示历史记录
  13. No plugin found for prefix 'mybatis-generator' in the current project ORA-28040: No matching authen
  14. python使用虚拟内存_深入浅出虚拟内存(一)
  15. 能量收集技术能为利用环境能源的应用带来巨大优势
  16. 华为手机微信聊天记录删除怎么恢复?基于华为电脑助手备份的恢复方法
  17. 图像和流媒体 -- 帧率、分辨率、码流的概念和关系
  18. Mac电脑使用:Mac电脑一键智能清理神器CleanMyMac X,Android开发者
  19. Windows 下 android自动打包 volley项目
  20. 微信小程序自定义模态框

热门文章

  1. 看懂 ,学会 .NET 事件的正确姿势
  2. 微信红包随机算法实现
  3. 小逗比机器人聊天接口api
  4. 聚焦触宝反侵权事件:中国创业者用什么护航海外市场大门
  5. Linux内核学习笔记十一——I/O层和I/O调度机制
  6. linux vsftpd架设
  7. 几种检查调试CSS布局的有效方法
  8. vs2010中release模式下调试程序
  9. java.security.InvalidKeyException: Illegal key size异常解决
  10. IGMP V1 V2 V3 定义和区别