【Shell基础】Linux字符截取和字符处理

字符截取命令

cut:字段提取命令

cut和grep的区别是:cut提取列、grep提取行

  • cut [选项] 文件名
    • -f 列号:提取第几列,逗号分开提取多列
    • -d 分隔符:按照指定分隔符分割列(默认分分割 符是制表符)

示例

  • cat /etc/passwd | grep /bin/bash | grep -v root #获取普通用户的行
  • cat /etc/passwd | grep /bin/bash | grep -v root | cut -d “:” -f 1 #获取普通用户的第一列属性(用户名)

printf:格式化打印命令

  • printf ‘输出类型输出格式’ 输出内容
  • 输出类型:(n表示个数,%m.nf类似c语言)
    • %ns: 输出字符串
    • %ni: 输出整数
    • %m.nf: 输出浮点数
  • 输出格式:ASCII

示例

  • printf ‘%s %s %s\n’ 1 2 3 4 5 6 #3个%s代表每3个为一组
  • printf ‘%s\t %s\t %s\t %s\n’ $(cat student.txt) #把表格格式的文本文件进行格式化输出

awk:截取符合条件的列

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

  • 条件(一般使用关系表达式作为条件):
    • X > 10
    • X >= 10

  • 动作:
    • 格式化输出(printf)
    • 流控制语句

特性

awk会先读入第一行数据,再进行处理
可以识别空格作为分隔符(df命令)
$0代表整行数据
$n代表本行第n列的数据
拥有print(自带换行符)和printf(不带换行符)

例子

  • awk ‘{printf $1 “\t” $4"\n"}’ 文件名 输出文件的1、4行
  • df -h | grep sda5 | awk ‘{print $5}’ | cut -d “%” -f 1 获取内存使用量
  • awk ‘BEGIN{print “Test Begin”} {print “$2 \t $5”}’ 文件名 BEGIN:优先执行
  • awk ‘BEGIN{FS=":"}END{print “end!!!”}{print “$1 \t $2”}’ /etc/passwd 在读取第一条数据之前指定分隔符
  • cat /etc/passwd | awk ‘$2 >= 500{print $1}’ 关系运算符

sed:数据流编辑器,主要用来及那个数据进行选取、替换、删除、新增

sed [选项] ‘[动作]’ 文件名

选项

  • -n:一般sed命令会把所有数据输出到屏幕,如果加入此选项,则只会把经过sed命令处理的行输出到屏幕
  • -e:允许对输入数据应用多条sed命令编辑(多个条件之间用分号分开)
  • -i:直接修改读取数据的文件,而不是由屏幕

动作

  • a: 追加,在当前行后添加一行或多行,\代表数据未完结
  • c: 行替换,用C后面的字符串替换掉原数据行
  • i: 插入,在当前行前插入一行或多行
  • d: 删除指定行
  • p: 答应指定行
  • s: 字符替换,格式:“行范围s/旧字符串/新字符串/g”(类似Vim)

示例

  • sed -n ‘2p’ 文件名 :输出文件中的第二行
  • sed ‘2,4d’ 文件名 :删除文件2行到第4行(文件未更改,只输出到屏幕)
  • sed ‘2a Hello’ 文件名 :在第二行之后追加hello
  • sed ‘4i World’ 文件名 :在第四行前插入World
  • sed ‘2c 2017’ 文件名
  • sed ‘2s/2017/2037/g’ 文件名 :把第二行的2017替换成2037 (不加哈行号代表所有行)

字符处理命令

sort

sort [选项] 文件名

选项

  • -f 忽略大小写
  • -n 以数值型进行排序,默认使用字符串进行排序
  • -r 反向n排序
  • -t 指定分隔符,默认分隔符是制表符
  • -k n[,m] 从第n个字段开始,第m个字段结束

示例

  • sort -n -t ‘:’ -k 3,3 /etc/passwd 指定分割符是‘:’,用第3个字段开头第三个字段结尾,就是只用第3个字段排序

wc(统计命令)

wc [选项] 文件名

选项

  • -l 只统计行数
  • -w 只统计单词数
  • -m 只统计字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值