ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

5.Linux命令

2022-03-27 14:03:01  阅读:158  来源: 互联网

标签:cut text 命令 sed Linux print txt


命令太多了,简单举几个例子作为抛砖引玉,我还是没事多看看Linux 命令大全

目录

cut

cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。

语法

cut [选项参数]  filename
#选项
# -f 列号,提取第几列 
# -d 分隔符,按照指定分隔符分割列
#....更多命令见上最方链接

Demo

  • 创建测试数据

    a1 a2 a3
    b1 b2 b3
    c1 c2 c3
    d1 d2 d3

  • shell脚本

    #按空格拆分为三列,并且读取第一列
    cut -d  " "   -f        1            text.txt
    #      拆分符        取拆分后第一列
    #*************************************#
    #按空格拆分为三列,并且读取第一列
    cut -d  " "   -f        1,2            text.txt
    #      拆分符        取拆分后第1,2列
    #*************************************#
    #先查出文件中"a1"行数据,然后再按照空格切分,取第一列
    cat text.txt |grep "a1" |cut -d " " -f 1
    
  • 总结

    cut还可以和cat\echo等输出命令配合使用,核心流程就是,先找一个能输出或者读取的文本,然后再用cut分,如果分割后结果还未满足,那继续用|分隔后再分...类似jdk8的Stream思想

sed

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

语法

  • sed [选项参数] ‘command’ filename

  • 选项参数

    • -e 直接在指令列模式上进行sed的动作编辑。(多个下面的command才需要加,只有一个command不需要)
  • command

    • a 新增,a的后面可以接字串,在下一行出现

    • d 删除

    • s 查找并替换

      ....更多命令见上最方链接

Demo

sed "3a 333" text.txt
#在第三行(3a)后面添加333
sed "2d" text.txt
#删除第二行
sed "/a2/d" text.txt
#删除"a2"所在行
sed "s/a1/v1/g" text.txt
#将a1替换为v1,结尾加“g”,则代表全局替换
sed -e "2d" -e "s/a1/v1/g" text.txt 
#多个命令一起用时,则需在每个命令前添加-e

sort

语法

sort(选项)(参数)

选项 说明
-n 依照数值的大小排序
-r 以相反的顺序来排序
-t 设置排序时所用的分隔字符
-k 指定需要排序的列

....更多命令见上最方链接

参数:指定待排序的文件列表

Demo

sort  -t " "        -k 1              -r     text.txt
#   根据" "拆分    用拆分后第一列排序    倒序

awk

语法

awk [选项参数] ‘pattern1{action1} pattern2{action2}...’ filename

pattern:表示AWK在数据中查找的内容,就是匹配模式
action:在找到匹配内容时所执行的一系列命令

选项参数

  • -F 指定输入文件折分隔符
  • -v 赋值一个用户定义变量

....更多命令见上最方链接

Demo

awk -F    " "      '/2/{print $1,$2}' text.txt
#      根据" "拆分  匹配包含“2”的数据(此处可用正则),然后把匹配到的行数输出第1,2列(print $1,$2),当然此处可以做一些其他的操作
#*************************************#
awk -F " "  'BEGIN{print "s s"} /2/{print $1,$2} END{print "e e"}'    text.txt
#BEGIN{print "s s"} 相当于给“print $1,$2”加页眉
#END{print "e e"} 相当于给“print $1,$2”加页脚
#*************************************#
awk -v i=1 -F " "  '{print $1+i}' text.txt
#修改文件内容为
#1 2 3
#4 5 6
#7 8 9
#-v i=1 定义变量,赋值=1
#-F “ ”按空格切分
# {print $1+i} 用定义的变量与拆分出的第一列数字分别相加输出
#*************************************#
awk -F "" '{print "filename:"FILENAME, "linenumber:" NR,",columns:"NF }' text.txt 
#FILENAME 数据来自哪个文件名
#NR 行号
#NF 一行有几列 例如:"1 2 3" 会输出5

此命令还要结合正则表达式使用

标签:cut,text,命令,sed,Linux,print,txt
来源: https://www.cnblogs.com/rb2010/p/16062648.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有