sort grep awk sed 用法详解 Linux命令/bash语言

sort排序

sort参考 https://www.jianshu.com/p/c4d159a98dd8
sort [-bcdfimMnr] [-o<输出文件>] [-t<分隔字符>] [+<起始栏位>-<结束栏位>] [--help][--verison] [文件]

简单常用:
-t<分隔字符>:指定分隔符,默认的分隔符为空白字符和非空白字符之间的空字符
-f:将小写字母视为大写字母
-k:以哪个区间 (field) 来进行排序
-n:依照数值的大小排序 -1n -2n
-o<输出文件>:将排序后的结果存入指定的文件
-r:降序
其他:
-b:忽略每行前面开始的空格字符,空格数量不固定时,该选项几乎是必须要使用的("-n"选项隐含该选项,测试发现都隐含)
-c:检查文件是否已经按照顺序排序,如未排序,会提示从哪一行开始乱序
-C:类似于"-c",只不过不输出任何诊断信息。可以通过退出状态码1判断出文件未排序
-d:只处理英文字母、数字及空格,忽略其他的字符
-h:使用易读性数字(例如:2K、1G)
-i:除了040至176之间的ASCII字符外(八进制0-177),忽略其他的字符(忽略无法打印的字符如退格/换页键/回车)
-m:将几个排序好的文件进行合并,只是单纯合并,不做排序
-M:将前面3个字母依照月份的缩写进行排序
-u:忽略相同行
  • -k详解
    [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
    – FStart,从第几列开始
    – .CStart,从该列第几个字符开始
    – Modifier,只n、r等其他参数
    – FEnd,到第几列结束
    – .CEnd,到该列第几个字符结束
    – 对第三列排列,按ASCII
    sort -t $’\t’ -k 3 sort.log
    –加n后,按照数值排序
    sort -t $’\t’ -k 3n sort.log
awk根据内容分析并处理
  • 一行一行,一行分成数个字段分析处理,默认分隔符是空格键或tab键
  • 可读取前一个指令的 standard input
    awk '条件类型1{动作1}条件类型2{动作2}' filename
  • 3个变量,
  1. NF: 每一行处理的字段数
  2. NR 目前处理到第几行
  3. FS 目前的分隔符
  • 逻辑判断 > < >= <= == !== , 赋值=
  • BEGIN END
  1. BEGIN之后列出的操作在{}内将在awk开始扫描输入之前执行
  2. END{}内的操作, 将在扫描完输入文件后执行
  3. {}内, 可以使用 if else ,for(i=0;i<10;i++), i=1 while(i<NF)
    可见, awk的很多用法都等同于C语言, 比如"\t" 分隔符, print的格式, if, while, for 等等
  4. $0 代表整行, $1代表第一个区域, $2代表第二个区域…
sed编辑
  • 以行为单位的文本编辑工具
  • 可以分析 standard input
  • sed [-nef] '[动作]' [输入文本]
  • -n : 安静模式, 一般sed用法中, 来自stdin的数据一般会被列出到屏幕上, 使用-n参数后, 只有经过sed处理的那一行被列
  • -e : 多重编辑, 比如你同时又想删除某行, 又想改变其他行
    -f : 首先将 sed的动作写在一个档案内, 然后通过 sed -f scriptfile 就可以直接执行 scriptfile 内的sed动作
    -i : 直接编辑
  1. a 新增, a 后面可以接字符串, 而这个字符串会在新的一行出现. (下一行)
  2. c 取代, c 后面的字符串, 这些字符串可以取代 n1,n2之间的行
  3. d 删除, 后面不接任何东西
    ‘1d’ ‘2,$d’ ‘$d’
  4. i 插入, 后面的字符串, 会在上一行出现
  5. p 打印, 将选择的资料列出, 通常和 sed -n 一起运作 sed -n ‘3p’ 只打印第3行
  6. s 取代, 类似vi中的取代, 1,20s/old/new/g
  7. '/word/'带word的行
  8. q r w
grep查找截取
  • grep [option] pattern file
  • 参数
    -c : 只输出匹配的行
    -i : 不区分大小写
    -h : 查询多文件时不显示文件名
    -l : 查询多文件时, 只输出包含匹配字符的文件名
    -n : 显示匹配的行号及行
    -v : 显示不包含匹配文本的所有行(我经常用除去grep本身)
    grep -E主要是用来支持扩展正则表达式,比如|、&这些符号,用于grep多条件查询,并非是使用标准正则表达式。
    在shell下面man grep看了下,加上-P(使用Perl的正则引擎)即可过滤出目标数据
    但是在MAC OS下面man grep是没有-P参数的,因为新的主流正则引擎已经默认加上了-P参数了

作者:Zey
链接:https://www.jianshu.com/p/e1acfb7989b2
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

cut剪切
cat查看
vi编辑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值