shell笔记02 - read,grep,cut,awk,sed命令

本文介绍了Linux下的read命令用于获取用户输入,grep用于行提取,cut用于列提取,awk进行复杂数据处理,sed进行文本处理的基本用法和实例。通过这些实用技巧,掌握Linux命令行操作的关键步骤。
摘要由CSDN通过智能技术生成

1.read命令
语法: read -参数
-p:给出提示符。默认不支持"\n"换行
-s:隐藏输入的内容
-t:给出等待的时间,超时会退出read
-n:限制读取字符的个数,触发到临界值会自动执行

demo:

#!/bin/bash
echo "请输入参数"
read -p "提示符: "  -t 10 param
echo "$param"
exit 0

测试结果:

[root@iZbp1e9mxelwe7pwimpw8sZ hecr]# ./test.sh 
请输入参数
提示符: 测试参数
测试参数

2.grep命令
grep应用场景: 通常对数据进行 行的提取

语法: grep [选项]…[内容]…[file]
-v #对内容进行取反提取
-n #对提取的内容显示行号
-w #精确匹配
-i #忽略大小写
^ #匹配开头行首
-E #正则匹配

demo:

# 查询包含docker字符串的进程,并对宝行"grep"字符串的进行排除
[root@iZbp1e9mxelwe7pwimpw8sZ hecr]# ps -ef | grep -v "grep"| grep "docker"
root       880     1  0  2020 ?        00:41:27 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root     20501   880  0 Jun16 ?        00:00:02 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 15672 -container-ip 172.17.0.2 -container-port 15672
root     20512   880  0 Jun16 ?        00:00:02 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5672 -container-ip 172.17.0.2 -container-port 5672
root     20517   879  0 Jun16 ?        00:01:37 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/c794df1797abdee3fa839ded442cacba3f19c640f22c7532095cf4a4a1b132c2 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc

3.cut命令
cut应用场景: 通常对数据进行列的提取
语法: cut [选项]…[file]
-d #指定分割符
-f #指定截取区域
-c #以字符为单位进行分割
注意: 不加-d选项,默认为制表符,不是空格

demo:

# 对ps命令查询结果取第一列
[root@iZbp1e9mxelwe7pwimpw8sZ hecr]# ps -ef | grep -v "grep"| grep "docker" | cut -d " " -f 1
root
root
root
root

4.awk命令
awk的应用场景: 通常对数据进行列的提取
语法:
awk '条件 {执行动作}'文件名
awk ‘条件1 {执行动作} 条件2 {执行动作} …’ 文件名
或awk [选项] ‘条件1 {执行动作} 条件2 {执行动作} …’ 文件名

特殊要点与举例说明:

  • printf #格式化输出,不会自动换行。
  • print #打印出内容,默认会自动换行
  • $1 #代表第一列 $0 #代表一整行
  • -F #指定分割符
  • NR #行号

demo:

#打印第二列,并且换行
[root@iZbp1e9mxelwe7pwimpw8sZ hecr]# docker ps -a|awk '{print $2}'
ID
rabbitmq:management
rabbitmq:management
#当行号大于等于2时,打印第二列,并且换行.
[root@iZbp1e9mxelwe7pwimpw8sZ hecr]# docker ps -a|awk '(NR >= 2){print $2}'
rabbitmq:management
rabbitmq:management

5.sed命令
sed的应用场景: 主要对数据进行处理(选取,新增,替换,删除,搜索)
sed语法: sed [选项][动作] 文件名
参数说明:
-n或–quiet或–silent 仅显示script处理后的结果。

动作说明:

  • a :新增
  • c :取代
  • p :打印
  • s :取代

demo:

#显示第一,第二行
[root@iZbp1e9mxelwe7pwimpw8sZ hecr]# docker ps -a|awk '{print $1}'| sed -n 1,2p
CONTAINER
c794df1797ab
# 在结果的下一行新增内容
[root@iZbp1e9mxelwe7pwimpw8sZ hecr]# docker ps -a|awk '{print $1}'| sed  'a/R/新增'
CONTAINER
/R/新增
c794df1797ab
/R/新增

6.文章参考链接
a. https://www.runoob.com/linux/linux-comm-read.html
b. https://www.cnblogs.com/liuyihua1992/p/9689308.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值