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

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

一 cut命令

cut 选项 文件名

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

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

比如有一个文件student.txt

90cef0b7109db23b8935ed80bf5247ae.png

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

cut -f 2,3 student.txt

064ff648550fbc8e66daeb3833d0b75e.png

截取第2列和第3列

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

ae008317f853f3c082a92483103855ae.png

cut命令的局限

ebc53d27de15e4d4d6988bc5e6515d60.png

f6f47eca3c1d4d3f6cc23e43ba1cae2b.png

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

二 printf命令

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

输出类型

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

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

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

442967ff8e70405f71abd47e66be6f91.png

来看例子

printf %s 1 2 3 4 5 6

744b4e68082e230392b6983006ed193f.png

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

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

63d51e4ea4eda25f8b6a80b74a8b6d91.png

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

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

8c0dd1878197b4fe807a0df56c9bc6dc.png

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

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

\n代表换行

4a81d31034f51e6e3eed731185983217.png

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

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

5fedf3bef2822ac94f7664eeb8c62fe2.png

如果想调整格式输出

6e3431e9c4323a01c905452b68805f6f.png

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

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

printf命令不会自动加入换行符,需要手工加入

三 awk命令

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

条件

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

x>10

x>=10

x<=10

动作

格式化输出

流程控制语句

下面举例来看

839b60a65ef33788659d8199b3fe1982.png

cb2693907e0c0fb054db925fce818e7d.png

截取第2列和第6列

9fa8175fb94f21521a56504221839c56.png

005d5382559ba1e7a9869f2c00fe23cb.png

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

bfcacf5d249b42dbdc879c5b41803f16.png

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

71b7dc58b6405fd45127a6dd3f46a9e0.png

在结尾加上一段描述语言

20f902f7bffaab4ba2f77a0d69e2e0aa.png

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

ba8e7c7ca98fee09a0bfaee35f3e5653.png

判断第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文件

ab603b7eac9d5f430412892dcf848680.png

4f496b57124435002fb9bf9ec4035ffa.png

不加-n就会全部输出

b687fe6dec0fbc47a4104f29b7ea3ad8.png

指定输出第2行

b42be35b4ec98095e6ca1dff6de4d654.png

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

a400ef5a4799827e593d0b99596ad0fc.png

在第2行后插入hello

d111d7b56e47efe909bc52099294e256.png

在第2行后插入两行

ce0b3e2891fc5287cb906e2700969488.png

替换第2行

38268cbb08531b74ea8d73062f08a116.png

把第3行的74换成99

7c3b3465b5514872aea826c0693a99df.png

同时把Liming和Gao替换成空

五 sort命令

sort 选项 文件名

选项:

-f:忽略大小写

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

-r:反向排序

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

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

举例子

sort /etc/passwd

1c8a597721f9a46c8035c0ee664a31ad.png

按开头字母排序的

sort -r /etc/passwd

反向排序

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

82c5dc74a6262970ec6b08a8a23025ee.png

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

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

0b1331709591d260c1c78e86d0c51c18.png

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值