Linux 第五章 shell编程之字符截取命令

字符截取命令

[root@cloud ~]# vi .bashrc

#配置别名

 

[root@cloud ~]# grep "/bin/bash"/etc/passwd

root:x:0:0:root:/root:/bin/bash

user1:x:500:500::/home/user1:/bin/bash

user2:x:501:501::/home/user2:/bin/bash

 

[root@cloud ~]#grep "/bin/bash" /etc/passwd | grep -v "root"               

user1:x:500:500::/home/user1:/bin/bash

user2:x:501:501::/home/user2:/bin/bash

并上后面的取反

 

1.cut字段提取命令

cut [选项] 文件名

选项

–f列号:提取第几列

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

 

[root@cloud jb]# grep "/bin/bash"/etc/passwd | grep -v "root" | cut -f 1 -d ":"

user1

user2

 

[root@cloud jb]# cut -f 2,4 student.txt

Name       Mark

furong      85

fengj         60

cang          70

要用制表符Tab

 

[root@cloud jb]# df -h

Filesystem      Size Used Avail Use% Mounted on

/dev/sda1        19G 2.5G   15G  15% /

tmpfs           751M     0 751M   0% /dev/shm

/dev/sdb1       4.5G 1.9M  4.3G   1% /data

 

2.printf命令

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

输出类型:

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

%ni:输出整数。

%m.nf:输出浮点数。

 

输出格式:

\a:输出警告声音

\b:输出退格键,也就是Backspace键

\f:清楚屏幕

\n:换行

\r:回车,也就是Enter键

\t:水平输出退格键,也就是Tab键

\v:垂直输出退格键,也就是Tab键

 

[root@cloud jb]# printf '%s\t%s\t%s\t%s\n'$(cat student.txt)

ID     Name       gender     Mark

1       furong      F       85

2       fengj         F       60

3       cang                   F       70

 

在awk命令的输出中支持print和printf命令

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

printf:是标准格式输出命令,并不会自动加入换行符

 

3.awk命令

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

条件(pattern)

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

x>10判断变量x是否大于10

x>=10

x<=10

 

动作(Action)

格式化输出

流程控制语句

 

[root@cloud jb]# awk '{printf $2"\t" $4 "\n"}' student.txt

Name       Mark

furong      85

fengj         60

cang                   70

 

[root@cloud jb]# df -h | grep"/dev/sda" | awk '{print $5}' | cut -d "%" -f 1

15

 

[root@cloud jb]# awk 'END {print"test"}''{print $2 "\t" $4}' student.txt

Name       Mark

furong      85

fengj         60

cang          70

test

 

[root@cloud jb]# cat /etc/passwd |grep/bin/bash | awk '{FS=":"}{print $1 "\t" $3}'

root:x:0:0:root:/root:/bin/bash      

user1        500

user2        501

 

[root@cloud jb]# cat student.txt | grep -vName | awk '$4>=70{print $2}'

furong

cang

 

4.sed命令

是一种几乎包括所有uinx平台(包括Linux)的轻量级流编辑器。sed主要用来将数据进行选取、替换、删除、新增的命令。

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

选项

-n 一般sed命令会把所有数据都输出到屏幕,如果加入此选择则会把经过sed命令处理的行输出到屏幕

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

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

 

动作

a 追加

c 行替换

I 插入

p 打印

s 子串替换

d 删除

 

[root@cloud jb]# sed -n '2p' student.txt

1       furong      F       85

 

[root@cloud jb]# sed '2d' student.txt

ID     Name       gender     Mark

2       fengj         F       60

3       cang          F       70

[root@cloud jb]# sed '2,4d' student.txt

ID     Name       gender     Mark

 

[root@cloud jb]# sed '2a piaoliang jiushirnx' student.txt

ID     Name       gender     Mark

1       furong      F       85

piaoliang jiushi rnx

2       fengj         F       60

3       cang                   F       70

 

[root@cloud jb]# sed '4c cangls bujige'student.txt

ID     Name       gender     Mark

1       furong      F       85

2       fengj         F       60

cangls bujige

 

[root@cloud jb]# sed '4s/70/100/g'student.txt

ID     Name       gender     Mark

1       furong      F       85

2       fengj         F       60

3       cang                   F       100

 

[root@cloud jb]# sed -i '4s/70/100/g'student.txt

[root@cloud jb]# cat student.txt

ID     Name       gender     Mark

1       furong      F       85

2       fengj         F       60

3       cang                   F       100

 

[root@cloud jb]# sed -e's/furong//g;s/fengj//g' student.txt

ID     Name       gender     Mark

1                         F       85

2                         F       60

3       cang                   F       100

 

 

字符处理命令

sort命令

排序命令

sort [选项] 文件名

-f:忽略大小写

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

-r:反向排序

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

-k n[,m]按照指定的字段范围排序。

 

[root@cloud jb]# sort -t ":" -k"3,3" /etc/passwd

 

 

wc统计命令

wc [选项] 文件名

选项

-l 只统计行数

-w 只统计单词数

-m 只统计字符数

 

[root@cloud jb]# wc /etc/passwd

 21  27932 /etc/passwd

 

[root@cloud jb]# wc -l /etc/passwd

21 /etc/passwd

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子非愚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值