8.10-shell特殊符(*、?、#、\、|)及cut命令

本文介绍了Linux中常用的shell特殊符号,如*和?作为通配符,#作为注释符号,用于脱义,以及|作为管道符用于连接命令。重点讲解了如何使用cut命令进行文本字段的截取,包括按区块和字符截取,是学习Linux操作的重要知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习 linux 过程中,也许已经接触过某个特殊符号,例如: * ,它是一个通配符,代表零个或者多个字符或数字。下面我们就介绍下常用的特殊符号。

* 代表零个或者多个任意字符

[root@evan-01 ~]# ls
11.txt  3.txt                a.txt     test             test2.txt.bak   txtdir
1.txt   anaconda-ks.cfg      bb.txt    test2            test3_soft.txt
2.txt   anaconda-ks.cfg.bak  ojbk.txt  test2_heard.txt  test3.txt.bak
[root@evan-01 ~]# ls *.txt
11.txt  1.txt  2.txt  3.txt  a.txt  bb.txt  ojbk.txt  test2_heard.txt  test3_soft.txt
[root@evan-01 ~]# 

?代表一个任意的字符

[root@evan-01 ~]# ls
11.txt  3.txt                a.txt     test             test2.txt.bak   txtdir
1.txt   anaconda-ks.cfg      bb.txt    test2            test3_soft.txt
2.txt   anaconda-ks.cfg.bak  ojbk.txt  test2_heard.txt  test3.txt.bak
[root@evan-01 ~]# ls ?.txt
1.txt  2.txt  3.txt  a.txt
[root@evan-01 ~]#

# 注释符号(注释不会被展示出来)

[root@evan-01 ~]# name=evan #这个符号后面内容都是注释,不被显示
[root@evan-01 ~]# echo $name
evan
[root@evan-01 ~]#

\ 脱义字符

[root@evan-01 ~]# a=1
[root@evan-01 ~]# b=2
[root@evan-01 ~]# c=$a$b
[root@evan-01 ~]# echo $c
12
[root@evan-01 ~]#

我们实际想要的是吧 $a$b 输出出来,而不是作为变量 a b 输出出来,怎么办呢
之前介绍过一种方法,放到 '' 号里面,这样就会认为是字符串,直接输出了

[root@evan-01 ~]# a=1
[root@evan-01 ~]# b=2
[root@evan-01 ~]# c='$a$b'
[root@evan-01 ~]# echo $c
$a$b
[root@evan-01 ~]#

在这再介绍一种方法,把 $ 代表变量的含义给去掉,也就是脱义

[root@evan-01 ~]# a=1
[root@evan-01 ~]# b=2
[root@evan-01 ~]# c=\$a\%b
[root@evan-01 ~]# echo $c
$a%b
[root@evan-01 ~]#

| 管道符
这个字符在前面多次出现过,它的作用是将前面命令的输出作为后面命令的输入。这里提到的后面的命令,并不是所有的命令都可以的,一般针对文档操作的命令比较常用。例如:cat 、less、head、tail、grep、cut 、sort、wc、uniq、tee、tr、split、sed、awk等,其中 grep、sed 和 awk 是正则表达式所掌握的工具

[root@evan-01 ~]# ls
11.txt  3.txt                a.txt     test             test2.txt.bak   txtdir
1.txt   anaconda-ks.cfg      bb.txt    test2            test3_soft.txt
2.txt   anaconda-ks.cfg.bak  ojbk.txt  test2_heard.txt  test3.txt.bak
[root@evan-01 ~]# cat 3.txt | wc -l
4714
[root@evan-01 ~]#

cut 命令
cut 命令用来截取某一个字段

选项含义
-d后面跟分隔字符,分隔字符要用单引号括起来
-c后面接的是第几个字符(后面可以是数字 n,也可以是区间 n1-n2)
-f后面接的是第几个区块(后面可以是数字 n,也可以是区间 n1-n2)

按区块截取

[root@evan-01 ~]# cat /etc/passwd | head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin 
[root@evan-01 ~]# cat /etc/passwd | head -2 | cut -d ':' -f 1
root
bin
[root@evan-01 ~]# cat /etc/passwd | head -2 | cut -d ':' -f 1,2
root:x
bin:x
[root@evan-01 ~]# cat /etc/passwd | head -2 | cut -d ':' -f 1-3
root:x:0
bin:x:1
[root@evan-01 ~]# 

按字符截取

[root@evan-01 ~]# cat /etc/passwd | head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@evan-01 ~]# cat /etc/passwd | head -2 | cut -c1
r
b
[root@evan-01 ~]# cat /etc/passwd | head -2 | cut -c1,2
ro
bi
[root@evan-01 ~]# cat /etc/passwd | head -2 | cut -c1-10
root:x:0:0
bin:x:1:1:
[root@evan-01 ~]# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值