本文作者:sukai

编程列编辑(编程 列表)

sukai 2023-10-02 88

  Linux Shell编程-字符截取和处理命令

  一 cut命令

  cut 选项 文件名

  -f 列号,列号 :提取第几列,多个列用,分隔

  -d 分隔符:按照指定分隔符分隔列

  比如有一个文件student.txt

  

  注意,每个列直接用的TAB键

  cut -f 2,3 student.txt

  截取第2列和第3列

  cut -d “:”-f 1,3 /etc/passwd

  

  cut命令的局限

  

  

  如果想以” “空格来分割,截图第3列,是截图不到的,因为第一列和第二列直接空格特别多。

  二 printf命令

  printf ‘输出类型输出格式’ 输出内容

  输出类型

  %ns 输出字符串,n是数字,代表输出几个字符

  %ni 输出整数,n是数字,代表输出几个数字

  %m.nf 输出浮点数,%8.2f 输出6位整数和2位小数

  

  来看例子

  printf %s 1 2 3 4 5 6

  这样,虽然参数每个数字之间有空格,但是打印出来完全连在一起

  printf %s %s %s 1 2 3 4 5 6

  如果不加单引号,那么后面两个%s会被当成字符串

  printf ‘%s %s %s’ 1 2 3 4 5 6

  

  这样输出类型中3个%s,那么接下来的内容就3个一组加空格输出

  printf ‘%s %s %sn’ 1 2 3 4 5 6

  n代表换行

  

  printf ‘%s’ $(cat student.txt)

  不调整格式输出student.txt文件的内容

  

  如果想调整格式输出

  

  注:在下面要讲的awk命令的输出中支持print和printf命令

  print命令会在每个输出之后自动加入换行符

  三 awk命令

  awk ‘条件1{动作1} 条件2{动作2}…’ 文件名

  条件

  一般使用关系表达式作为条件

  x10

  x=10

  x=10

  动作

  格式化输出

  流程控制语句

  下面举例来看

  

  

  截取第2列和第6列

  

  

  截取第1列和第3列,这里我们看到,虽然df -h的输出结果是空格很多,但是依然可以截取,这就是awk比cut强大的地方

  

  在截图第2列和第6列之前加上了一段描述的语言

  

  在结尾加上一段描述语言

  

  在开始的时候用FS指定分隔符

  

  判断第6列大于87,然后截图第2列

  四 sed命令

  sed主要是用来将数据进行选取,替换,删除,新增的命令

  sed 选项 ‘动作’ 文件名

  选项:

  -n: 一般sed命令会把所有内容输出到屏幕,如果加了-n,只会把sed命令处理的行输出到屏幕

  -e: 允许对输出数据应用多条sed命令编辑

  -i: 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出

  动作:

  a :追加,在当前行后添加一行或多行,添加多行时,除最后一行外,每行末尾要加代表数据未完结

  c :行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾要加代表数据未完结

  i :插入,在当前行前插入一行或多行,插入多行时,除最后一行外,每行末尾要加代表数据未完结

  d:删除指定行

  p:输出指定行

  s:字符替换,格式为”行范围s/旧字串/新字串/g”

  下面来举例子,依然用之前的student.txt文件

  

  

  不加-n就会全部输出

  

  指定输出第2行

  

  删除第2行和第4行的数据,但是不修改文件本身

  

  在第2行后插入hello

  

  在第2行后插入两行

  

  替换第2行

  

编程列编辑(编程 列表)

  把第3行的74换成99

  

  同时把Liming和Gao替换成空

  五 sort命令

  sort 选项 文件名

  选项:

  -f:忽略大小写

  -n:以数值型进行排序,默认以字符串进行排序

  -r:反向排序

  -t:指定分隔符,默认分割符是制表符

  -k n[,m]:按照指定的字段范围排序,从第n个字段开始,m字段结束(默认到行尾)

  举例子

  sort /etc/passwd

  

  按开头字母排序的

  sort -r /etc/passwd

  反向排序

  sort -n -t “:” -k 3,3 /etc/passwd

  

  用第3个字段,以数值方式排序

  好了,Linux Shell编程-字符截取和处理命令就总结到这里,如有问题,欢迎指正,谢谢。

  本文永久更新链接地址:https://www.linuxidc.com/Linux/2016-11/137259.htm

阅读
分享