LINUX学习(五)Linux文本处理命令

       Sort命令
  sort命令的功能是对文件中的各行进行排序。sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各种排序操作的。实际上,sort命令可以被认为是一个非常强大的数据管理工具,用来管理内容类似数据库记录的文件。
  Sort命令将逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一字符,如果还相同,将继续进行比较。
  语法:
  sort [选项] 文件
  说明:sort命令对指定文件中所有的行进行排序,并将结果显示在标准输出上。如不指定输入文件或使用“- ”,则表示排序内容来自标准输入。
  sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按ASCII字符顺序进行排序。
  改变缺省设置的选项主要有:
  - m 若给定文件已排好序,合并文件。
  - c 检查给定文件是否已排好序,如果它们没有都排好序,则打印一个出错信息,并以状态值1退出。
  - u 对排序后认为相同的行只留其中一行。
  - o 输出文件 将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。
  改变缺省排序规则的选项主要有:
  - d 按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。
  - f 将小写字母与大写字母同等对待。
  - I 忽略非打印字符。
  - M 作为月份比较:“JAN”
  - r 按逆序输出排序结果。
  +posl - pos2 指定一个或几个字段作为排序关键字,字段位置从posl开始,到pos2为止(包括posl,不包括pos2)。如不指定pos2,则关键字为从posl到行尾。字段和字符的位置从0开始。
  - b 在每行中寻找排序关键字时忽略前导的空白(空格和制表符)。
  - t separator 指定字符separator作为字段分隔符。
  下面通过几个例子来讲述sort的使用。
  用sort命令对text文件中各行排序后输出其结果。请注意,在原文件的第二、三行上的第一个单词完全相同,该命令将从它们的第二个单词vegetables与fruit的首字符处继续进行比较。
  $ cat text
  vegetable soup
  fresh vegetables
  fresh fruit
  lowfat milk
  $ sort text
  fresh fruit
  fresh vegetables
  lowfat milk
  vegetable soup
  用户可以保存排序后的文件内容,或把排序后的文件内容输出至打印机。下例中用户把排序后的文件内容保存到名为result的文件中。
  $ sort text>result
  以第2个字段作为排序关键字对文件example的内容进行排序。
  $ sort +1-2 example
  对于file1和file2文件内容反向排序,结果放在outfile中,利用第2个字段的第一个字符作为排序关键字。
  $ sort -r -o outfile +1.0 -1.1 example
  sort排序常用于在管道中与其他命令连用,组合完成比较复杂的功能,如利用管道将当前工作目录中的文件送给sort进行排序,排序关键字是第6个至第8个字段。
  $ ls - l | sort +5 - 7
  sort命令也可以对标准输入进行操作。例如,如果您想把几个文件文本行合并,并对合并后的文本行进行排序,您可以首先用命令cat把多个文件合并,然后用管道操作把合并后的文本行输入给命令sort,sort命令将输出这些合并及排序后的文本行。在下面的例子中,文件veglist与文件fruitlist的文本行经过合并与排序后被保存到文件clist中。
  $ cat veglist fruitlist | sort > clist
  uniq命令

  文件经过处理后在它的输出文件中可能会出现重复的行。例如,使用cat命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以使用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本。
  语法:
  uniq [选项] 文件
  说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如果输入文件用“- ”表示,则从标准输入读取。
  该命令各选项含义如下:
  - c 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。
  - d 只显示重复行。
  - u 只显示文件中不重复的各行。
  - n 前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。
  +n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。
  - f n 与- n相同,这里n是字段数。
  - s n 与+n相同,这里n是字符数
  例如

  1. 显示文件example中不重复的行。
  uniq - u example

  2. 显示文件example中不重复的行,从第2个字段的第2个字符开始做比较。
  uniq - u - 1 +1 example

时间: 2024-08-03 23:04:41

LINUX学习(五)Linux文本处理命令的相关文章

【Linux学习 】Linux使用Script命令来记录并回放终端会话

[TOC] 一.背景 在之前的博客 [Git学习-->如何通过Shell脚本实现 监控Gitlab备份整个过程并且通过邮件通知得到备份结果?] 里面,我已经详细记录了每天的自动备份与清理过期备份文件的工作. 1.每天凌晨2点在Gitlab服务器上执行Gitlab备份功能. 2.每天凌晨3点在Gitlab服务器上执行scp命令将最新的Gitlab备份文件复制到远程的文件备份服务器. 3.每天凌晨4点在远程的文件备份服务器上检测备份文件的时间,自动删除超过7天的备份文件. 这个脚本从8月18日开始运

Linux中的高级文本处理命令,cut命令,sed命令,awk命令

1.2.1 cut命令  cut命令可以从一个文本文件或者文本流中提取文本列.   cut语法 [root@www ~]# cut -d'分隔字符' -f fields    ## 用于有特定分隔字符 [root@www ~]# cut -c 字符区间            ## 用于排列整齐的信息 选项与参数: -d:后面接分隔字符.与 -f 一起使用: -f:依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思: -c:以字符 (characters) 的单位取出固定字符

Linux中Awk常用文本处理命令用法详解

I. NR,FNR记录当前行 [root@LinuxEA awk]# cat nr1 1 a 2 b 3 c 4 d 5 e [root@LinuxEA awk]# awk '{print FNR}' nr1 1 2 3 4 5 6 [root@LinuxEA awk]# awk '{print NR}' nr1 1 2 3 4 5 6 [root@LinuxEA awk]# awk '{print "行. = " NR " 数据 = " RNR,$0}' nr1

linux学习笔记 linux目录架构_unix linux

linux目录架构   / 根目录   /bin 常用的命令 binary file 的目錄   /boot 存放系统启动时必须读取的档案,包括核心 (kernel) 在内   /boot/grub/menu.lst GRUB设置   /boot/vmlinuz 内核   /boot/initrd 核心解壓縮所需 RAM Disk   /dev 系统周边设备   /etc 系统相关设定文件   /etc/DIR_COLORS 设定颜色   /etc/HOSTNAME 设定用户的节点名   /et

Linux下常用文本处理命令

Linux下面有很多经典的非常有用的命令,其中处理文本的命令就有很多.这些小工具经过了几十年时间的洗礼,现在已经变成了经典,已经变成了Linux下面的标准,其实它们一直是遵循着Linux的标准.下面就让我们一起看看这些经典的Linux文本处理命令. 一. sort 文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的info页. 二. tsort 拓扑

Linux学习之CentOS(二十九)--Linux网卡高级命令、IP别名及多网卡绑定的方法_Linux

本篇随笔将详细讲解Linux系统的网卡高级命令.IP别名以及Linux下多网卡绑定的知识 一.网卡高级命令 在之前的一篇随笔里Linux学习之CentOS(九)--Linux系统的网络环境配置,详细讲解了Linux系统下的网络环境配置等知识,我们了解了一些关于网络配置的一些基本命令.在这里将补充一些Linux系统下有关网卡的一些高级命令. ①mii-tool 命令 mii-tool命令我们可以用来查看网卡状态信息,包括了以太网连接是否正常,使用的是哪种型号的网卡等等 [root@xiaoluo

linux命令学习之10个网络命令和监控命令_linux shell

网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用于查看linux服务器ip地址,管理服务器网络配置 ,通过 telnet 和ethernet建立与linux之间的网络链接,查看linux的服务器信息等.下面让我们看看在linux下的网络和监控命令的使用.1. hostname 复制代码 代码如下: hostname 没有选项,显示主机

Linux系统中vim工具常用命令大全

  在linux下做开发,甚至是只做管理维护工作,也少不了Vim的使用.作为一个新手,我也是刚刚接触,本节将我日常使用或收集的Vim常用命令记录下来. 当然,直接在命令行上输入:vimtutor,就可以学习到Vim的所有命令了.Vim很强大,很多牛人在vim里集成很多插件什么的,但这里只介绍基本vim命令. 移动命令 h "左j "下k "上l "右w "光标移动到下一个单词的首字符 a word forwardb "光标移动到上一个单词的首字符

phpmyadmin: linux学习篇-使用apt-get方式安装LAMP包括phpmyadmin

linux学习篇-使用apt-get方式安装LAMP包括phpmyadmin    对于想学linux的朋友来说,在虚拟机上装上linux系统是不二选择.至于哪种linux好用,萝卜白菜,各有所爱.我喜欢ubuntu,虚拟机上安装的是最新的ubuntu11.10    搭建LAMP环境有两种方式可以选择,一是用apt-get方式安装,这个适合初学者.有点是安装简单,不需要做什么配置就可以使用.缺点是自主性太差,安装目录啊啥的都是默认的,不方便自己管理,也不敢轻易的移动位置.二是用编译安装的方法.

Linux中Vim工具的常用命令

在linux下做开发,甚至是只做管理维护工作,也少不了Vim的使用.作为一个新手,我也是刚刚接触,本节将我日常使用或收集的Vim常用命令记录下来. 当然,直接在命令行上输入:vimtutor,就可以学习到Vim的所有命令了.Vim很强大,很多牛人在vim里集成很多插件什么的,但这里只介绍基本vim命令. 移动命令 h      "左 j      "下 k      "上 l      "右 w      "光标移动到下一个单词的首字符 a word fo