zoukankan      html  css  js  c++  java
  • Linux常用命令整理3:cut,sort,tr,head系列,xargs

    cut

    参考:https://blog.csdn.net/yangshangwei/article/details/52563123

    1,cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

    2,如果不指定 File 参数,cut 命令将读取标准输入。

    #用法1:按字节提取
    cut  -b number [file]  //拆分多字节字符,可能会导致乱码
    cut  -bn  number [file]  //不拆分多字节字符,字符完整了才显示,不完整不显示,-n只能和-b一起使用
    #实例
    cut -b 4 file //第4个字节
    cut -b 1-3 file //第1-3个字节
    cut -b 1,2,3 file //cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。不能颠倒定位的顺序。
    cut -b -3 file //包含第3个,等价于1-3
    cut -b 3- file //包含第3个,等价于3-最后
    cut -b -3,3- //输出整行
    
    #用法2:按字符提取,以字符为单位
    cut -c number [file]
    #实例
    cut -c 4 file
    cut -c 2-3 file
    cut -c 1,2,3 file
    cut -c -3
    cut -c 3-
    cut -c -3,3-
    
    #用法3:按域提取,以分隔符划分域
    cut [-d 分隔符(默认为制表符)] -f number [file] 
    #注意
    1,结果会以分隔符连接,不连续的时候也会有分隔符
    2,只能以单字节分割,否则报错//这也是cut的缺点
    #实例
    cut -d: -f4 file //形参和实参之间有无空格都可以
    cut -d: -f2-4
    cut -d: -f-3
    cut -d: -f3-
    cut -d: -f-3,4-//也是整行

    sort

    参考:

    https://blog.csdn.net/weixin_30763397/article/details/96409117(综合使用cut,sort,tr,cat等等)

    https://blog.csdn.net/z1164072826/article/details/81056872

    1,sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

    2,如果按数值排序,比较的列如果首字符不是数字,那么就按字符顺序比较,如果列首有数字会截取到非数字字符的数值来比较。

    #语法
    -b 忽略每行前面开始出的空格字符
    -n 依照数值的大小排序
    -g  一般数值:以浮点数字类型比较字段。这个选项的运作有点类似 -n.差别仅在于这个选项的数字可能有小数点及指数
    -u 意味着是唯一的(unique),输出的结果是去完重了的
    -o<输出文件> 将排序后的结果存入指定的文件
    -r 以相反的顺序来排序
    -t 使用单个字符char作为默认的字段分割字符,默认是制表符
    -k 定义排序键值字段(该选项后接一个字段编号,或则是一对数字。有时-k之后可用空白分隔。当出现多个-k选项时候,会先从第一个键值开始排序,找出匹配该键值的记录后,再进行第二个键值字段的排序,以此类推
    
    //需要结合其他命令,格式化每行比较的列,才能发挥真正的作用
    
    #实例
    //基础排序
    sort -n /etc/passwd
    sort -g /etc/passwd
    sort -r /etc/passwd
    sort [-ngr] /etc/passwd
    cut -d: -f3- /etc/passwd|sort -n
    ps -ef|head -n 5|sort  -k3
    //分割排序 sort -t: -k1,1 /etc/passwd 以冒号隔开的第1个字段:用户名称 对 /etc/passwd进行排序 sort -t: -k3nr /etc/passwd 以冒号隔开的第3个字段 uid 反向(由大到小)排序 sort -t: -k4n -k3n /etc/passwd 以冒号隔开的第4个字段GID,以及第3个字段uid排序 //输出 sort -r number.txt -o number.txt

    tr

    参考:

    https://www.runoob.com/linux/linux-comm-tr.html(菜鸟教程)

    https://blog.csdn.net/wisgood/article/details/17290707?utm_source=blogxgwz0

    1,tr不接受指定的文件参数,而只是对标准输入进行翻译(压缩,替换,删除)。

    2,凡是在字符集SET1中的字符都会被替换为字符集2中相应位置上的字符。

    3,通过使用tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将 tr 看作为 sed的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr所能够做的。

    #语法
    tr [OPTION] SET1 [SET2] 
    
    #选项
    -c:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
    -d:删除指令字符
    -s:缩减连续重复的字符成指定的单个字符
    -t:削减 SET1 指定范围,使之与 SET2 设定长度相等
    
    #实例
    //cat number.txt:内容是1234567890zxcvbnm
    cat number.txt|tr 'a-z' 'A-Z' //小写转大写
    cat number.txt|tr '1-5' '[A*]' //1,2,3,4,5都转换为A,*会重复为SET1的长度
    cat number.txt|tr '1-9' '[A*5]BCDE' //将A重复5次
    cat number.txt|tr 1-5 AB //12345会转换为ABBBB,SET2比SET1少的时候,会使用SET2最后一个字符补齐对应;如果SET2更多,多余的字符无效
    cat number.txt|tr -d '0-9' //删除全部数字
    cat number.txt|tr -s ' 	' //将多空格和制表符转为单个
    cat number.txt|tr -cd ''0-9 //删除全部非数字字符
    cat number.txt|tr -cs ' 0-9' //所有非数字的重复字符压缩为一个

    head

    参考:

    https://www.runoob.com/linux/linux-comm-head.html

    1,系列命令:cat,head,more,tac,tail,less

    #语法
    head [OPTION] [file]
    //选项
    -n 显示的行数 默认10行
    -c 显示的字节数
    //实例
    head -c 40 /etc/passwd
    head -n5 /etc/passwd
    //就这么简单
    
    #其他命令
    tail [OPTION] [file]
    多了一个-f,循环读取
    //实例
    tail -c 40 /etc/passwd
    tail -n5 /etc/passwd
    tail -f /var/run/test.log//循环读取
    
    cat [-nbsET] [file]
    -n 显示行号
    -b 对空白行不编号
    -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
    -E 每行结束显示$
    -T 将 TAB 字符显示为 ^I
    tac [-nbsET] [file]
    //同cat,以行倒序排列
    -n 显示行号
    -b 对空白行不编号
    -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
    -E 每行结束显示$
    -T 将 TAB 字符显示为 ^I
    
    more [-n][+n][-s][+/pattern] file...
    https://blog.csdn.net/yychuyu/article/details/89926703
    -N 一次显示N行
    +N 从第N行开始
    -s 连续多个空行显示为1行
    +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示 less [
    -mNs] file... -m 显示百分比 -N 显示行号 -s 连续空行显示为1行

    more和less的区别:

    1,more不可bai以回去,就是du不可以向前,只能向后,况且只能使用Enter和Space向后翻动。less使用j,k键盘bai可以上下翻动,还可以使用上下箭头。

    2,less不必读整个文件,加载速度会比more更快。

    3,less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容。

    xargs

    exec

    lsof

    参考1: https://www.cnblogs.com/sparkdev/p/10271351.html

    参考2:https://blog.csdn.net/yr137157/article/details/87112312

  • 相关阅读:
    第一阶段SCRUM冲刺day07
    第一阶段SCRUM冲刺day06
    第一阶段SCRUM冲刺day05
    第一阶段SCRUM冲刺day04
    2020年第七周学习进度
    第一阶段SCRUM冲刺day03
    第一阶段SCRUM冲刺day02
    团队会议01
    2020年第六周学习进度
    TCP/IP Socket 的理解
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/13845084.html
Copyright © 2011-2022 走看看