linux命令取出特定字符,【Linux】第十章 字符截取命令

阅读量:

199

初次接触Linux的学习笔记,部分作手册自查使用。如有错误或遗漏还请海涵,可评论或邮箱联系。

最后修改时间:2020-03-19 07:30:52 星期四

一、cut字段提取命令

cut [选项] 文件名:列提取命令

【选项】

-f:列号,提取第几列

-d:分隔符,按照指定分隔符分割列。默认使用制表符(tab)分割

【特点】

对制表符和有特定符号分开的字段效果好。如果字段之间用多个空格分开,cut就没法处理了,需要用到awk

cut是对文件中的每一行均执行一遍动作,提取出每一行里符合条件的字段输出

# ID Name gender Mark

# 1 furong F 85

# 2 fengj F 60

# 3 cang F 70

cut -f 2 student.txt

# Name

# furong

# fengj

# cang

cut -f 2,4 student.txt

# Name Mark

# furong 85

# fengj 60

# cang 70

cut -f 1,3 -d ":" /etc/passwd # 用":"分割列

二、printf命令

printf '输出类型 输出格式' 输出内容:标准输出

【输出类型】

%ns:输出字符串。n是数字,指代输出几个字符

%ni:输出整数。n是数字,指代输出几个数字

%m.nf:输出浮点数。m和n是数字,指代总位和小数位数。如%8.2f表共输出8位,其中2位是小数

【输出格式】

\a:输出警告声音

\b:输出退格键(Backspace)

\f:清除屏幕

\n:换行

\r:回车(Enter)

\t:水平输出退格键(Tab)

\v:垂直输出退格键(Tab)

# 输出文件内容

printf '%s' $(cat student.txt) # 将文件内所有字符串挨个输出

# printf不支持管道命令

# cat student.txt | printf '%s' 错误

三、awk命令

awk '条件1{动作1}条件2{动作2}...' 文件名:列提取命令

【条件】

BEGIN:在awk输出的开头部分执行动作

END:在awk输出的结尾部分执行动作

关系表达式

【动作】

格式化输出

流程控制语句

FS:指定列之间的分隔符。因为下述特点3,在FS前一定要加条件BEGIN,否则第一行将不能正确输出

【特点】

可以识别用多个空格分开的字段

awk是对文件中的每一行均执行一遍动作,提取出每一行里符合条件的字段输出,同cut

awk开始后,对于每一行,将文件名赋给变量$0,第一个字段赋给$1,第二个字段赋给$2...然后再执行单引号里的动作

awk '{printf $2 "\t" $4 "\n"}' student.txt

# 相当于cut -f 2,4 student.txt

# 如果没有条件,就无条件执行动作

df -h | awk '{printf $1 "\t" $3}'

# df -h的输出结果是用多个空格分开的,awk可以识别这样的字段

awk 'BEGIN{FS=":"}{print $1 "\t" $3}'

# 在FS前一定要加条件BEGIN

awk '$4>=70{print $2}'

# 每行如果第4个字段>=70,就输出第2个字段

四、sed命令

sed [选项] '[动作]' 文件名:增删改文件中的行

【选项】

-n:只把sed处理的行输出屏幕。默认是将处理后的整个文件输出屏幕,且并不真的去修改文件内容

-e:允许一条sed语句加多条动作,动作之间用;隔开

-i:sed处理结果写入文件

【动作】

数字:行号

a:追加,在当前行后添加行

i:插入,在当前行前插入行

d:删除指定行

p:打印,输出指定行

c:行替换,用c后面的字符串替换原行

s:字串替换。格式为"行范围s/旧字串/新字串/g"(类似于vim中的替换)

sed -n '2p' student.txt

# 查看文件的第2行

sed '2,4d' student.txt

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

sed '2a hello' student.txt

# 在第2行后追加hello,hello是第3行

sed '2i hello' student.txt

# 在第2行前插入hello,hello是第2行,原第2行变成第3行

sed '2c furong bu ji ge' student.txt

# 把第2行整行替换掉

sed -i '4s/70/100/g' student.txt

# 把第4行中的70替换成100

sed -e 's/fengj//g;s/cang//g' student.txt

# 允许多条动作,动作之间用;隔开

# 同时把"fengj"和"cang"替换为空

五、sort命令

sort [选项] 文件名:将文件中的内容排序

【选项】

-n:以数值型排序。默认为字符串型排序

-f:忽略大小写

-r:反向排序

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

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

sort /etc/passwd

# 默认按第1个字母从a-z行排序,第1个字母一样就比较第2个字母

sort -r /etc/passwd

# 从z-a

sort -n -t ":" -k "3,3" /etc/passwd

# 以":"为分隔符,按第3个字段,使用数值型排序

六、wc命令

wc [选项] 文件名:显示文件统计数据

【选项】

-l:只统计行数

-w:只统计单词数

-m:只统计字符数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值