linux-shell之grep,sed,awk基础命令

**

linux-shell基础命令

**

1.diff命令

diff : 用于shell中两个文件或两个目录之间的比较
格式:diff [options] files | directorys
输出信息:[num1,num2]. [a|c|d]. [num3,num4]
num1,num2 : 第一个文件中的行
a 添加
c 更改
d 删除
< 第一个文件中的内容
> 第二个文件中的内容
num3,num4 : 第二个文件中的行

常用参数:
-b :忽略空格
-B : 忽略空行
-i : 忽略大小写
-c: 显示文件所有内容并标示不同
-r: 对比目录
-u: 合并输出

2.patch

patch [options] 原文件 布丁文件 :利用设置修补文件
-b : 备份原文件
patch -b west file : 备份west文件
代码示例:
cat file1 看file1的内容
Hello,This is the first
cat file2 看file2的内容
Hello,Thisisthesecond
diff testfile1 testfile2 #比较两个文件

1c1
<Hello,Thisisthefirst

>Hello,Thisisthesecond

将比较结果保存到tetsfile.patch文件
diff file1 file2 > testfile.patch
cat testfile.patch 查看补丁包的内容
1c1
<Hello,Thisisthefirst

>Hello,Thisisthesecond

使用补丁包升级file1文件
patch -p0 file1 testfile.patch
patching file file1
cat file1 再次查看file1的内容
file1文件被修改为与file2一样的内容
Hello,This is the second

3.cut

cut : 截取命令
格式:cut -d [分隔符] -f [第几列/1-3第一列到第三列] 文件
-d : 分隔符
-f : 指定显示的列
-c :指定截取字符个数
cut -c 1-3 文件 截取1到3列到字符

4.sort

sort : 数字排序
格式: sort -n 参数 文件
-n : 纯数字排序
-r : 倒叙
-u :去掉重复
-o :输出到指定文件,类似于 > 重定向导入
-t :指定分隔符
-k :指定排序到列
代码:sort -n -t : -k 3 文件 以:为分隔符的第三列数字排序

uniq -c :合并重复并统计重复个数;
-d :显示重复的行;
-u :显示唯一的行;
sort -n 文件 | uniq -c/-d/-u

练习:ifconfig 网卡,显示此网卡的信息;用命令过滤出此网卡的ip信息,其他信息不显示。
ifconfig ens3 | head -n 2 | tail -n 1 | cut -d " " -f 10

5.tr

tr A B 把A替换成B,只能单个字符。
tr ‘a-z’ ‘A-Z’ :小写转大写
tr ‘A-Z’ ‘a-z’ :大写转小写
cat file | tr ‘a-z’ ‘A-Z’

6.test

test : 设定各种命令,比较。一般用 [] 代替
-ef : 文件节点是否保持一致 [“file” -ef “file2”] && echo yes || echo no
-nt : 文件1是不是比文件2新
-ot : 文件1是不是比文件2老
-d : 判断目录
-S : 套接字
-L : 软链接
-e : 文件或目录等是否存在 [ -e “/mnt”] && echo yes || echo no
-f : 判断普通文件 [ -e “file”] && echo yes || echo no
-b : 块设备
-c : 字符设备
判断条件:
&& :符合条件做的动作
||:不符合条件做的动作
示例判断网络是否通:ping 192.1.168.10 && echo is ok || echo is not ok
is ok
test的条件关系:1.-a :并且 2.-o :或者
test对空的判定:1.-n :判定内容不为空 2.-z :判定内容为空

示例:
a=2 b=2 c=5
[ " $a" -eq " $b" ] && echo yes echo no 结果:yes
[" $a" -le “0” -o " $c" -gt “10” ] && echo yes || echo no 结果:no

二.文本处理工具

1.grep :过滤工具

格式 : grep 匹配条件 处理文件
grep 关键字(root) 文件 :过滤文件中的关键字
grep ^root 文件 :以root开头
grep root$ 文件 :以root结尾
grep -i root 文件 :忽略大小写
grep -E “<root” 文件 :root之前不能有字符
grep -E “root>” 文件 :root之后不能有字符
grep -数字 文件 :显示过滤行以及上面几行和下面几行
grep -A 文件 :显示过滤行以及下面几行
grep -B 文件 :显示过滤行以及上面几行
grep -v 文件 :反向过滤
示例:grep root passwd | grep -E “^root|root$” -v
结果:文件中选出root在中间的行

grep字符数量匹配规则:
^west 以west开头
west$ 以west结尾
w…s w和s中间任意3个字符
w{m,n}s m到n个的字符
{le}{2} le出现两次
练习:显示系统中能被su命令切换用户名称
grep -E “<bash$|\ < sh $|<tcsh $” /etc/passwd | cut -d : -f 1

2.sed

格式:sed 参数 命令 处理对象文件
sed 参数 处理对象 -f 处理规则文件
对字符的处理 p (显示)
sed -n 5p file 显示第五行
sed -n 3,5p file 显示第三到五行
sed -ne "3p;5p file 显示第三行和第五行
sed -ne 1,5p file 显示第一到五行
sed -ne ‘5,$p’ file 显示第五行到最后
sed -n ‘/^#/p’ file 显示以#开头的行

对字符处理 d (删除)
sed 5d file 删除第五行
sed ‘5,$d’ file 第五行之后全部删
sed ‘/^#/d’ file 删除以#开头的行
sed ‘/^UID/!d’ file 删除以UID开头之外的行

对字符处理 a(添加)
sed -e ‘1a hello’ file file文件第一行后添加hello
sed -e ‘$a hello’ file file文件最后一行后添加hello
i(添加)
sed -e ‘1i hello’ file file文件第一行前添加hello
sed -e ’ $i hello’ file file文件最后一行前添加hello

对字符的处理 c (替换)
sed “/^#/c a” file file文件#开头换成a
r(整合文件)
sed ‘3r west’ file west文件放入file文件的第三行

sed 字符的替换 (/可以换成@)

sed ‘s/😕/g’ file file文件中所有的:替换为空
sed ‘s/one/two/g’ file 所有的one换成two
sed ‘5,$s/one/two/g’ file 换第五行到最后的
sed '/this/,/that/s/one/two/g file this和that之间的one换成two
sed -e 's/one/two/g;s/three/four/g file one换成two和three换成four
sed '/this/,/that/s/one/two/g -i file 把处理的内容保存到file文件中

3.awk

awk : awk就是把文件逐行的读入,“默认以空格为分隔符”将每行切片,切开的部分再进行各种分析处理的文本分析工具。
依次对每一行处理然后输出。
格式:awk - F 分割符 ‘BEGIN{} / / {action1;action2} END{}’ filename
action1,action2 为两条命令,中间用;隔开。
BEGIN :awk命令发生前做的事
/ / : 匹配代码块。可以是字符串或正则表达式
END:awk命令完成后做的事
awk -F : ‘{ print HELLO}’ file (HELLO被当做变量,加双引号当做字符)
awk -F : ‘{ print $1}’ file ($1)表示为第一列
awk '/net>/{print $0} 打出net开头的那一行内容
NR: 行数
NF: 列数
filename : 文件名称
“abcde”: 字符串
$0 : 表示整个当前行
$1 : 表示每行第一个字段
~ 包含
!~ 不包含
= = 等于,必须全部相等,精确比较
!= 不等于,精确比较
&& 逻辑与
|| 逻辑或
命令 : awk -F : ‘($1==“root” || $1==“lp”){print}’ passwd / awk -F : ‘$1~/root|lp/{print}’ passwd
都表示输出文件中 以 root 或者lp 开头的行 。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值