红色经典ppt模板免费下载/seo1新地址在哪里
文章目录
- 7.1 通配符
- 7.1.1 通配符介绍
- 7.1.2 通配符示例
- 7.2 正则表达式
- 7.2.1 grep命令
- 7.2.2 基本正则表达式
- 7.2.3 扩展正则表达式
7.1 通配符
在 Shell 中通配符用于查找文件名和目录名。它是由 Shell 处理的,只会出现在命令的参数中。
7.1.1 通配符介绍
* 匹配任意长度的字符,可以是 0 个
? 匹配任意单个字符,必须是1个
[] 匹配指定的字符范围内的任意单个字符
[a-z,A-Z,0-9] 匹配所有字母和数字,可以不加逗号
[a-z] 匹配所有小写字母
[A-Z] 匹配所有大写字母
[A-z] 匹配所有大小写字母,等价于 [a-z,A-Z]
[:upper:] 匹配所有大写字母,等价于 [A-Z]
[:lower:] 匹配所有小写字母,等价于 [a-z]
[:alpha:] 匹配所有字母,等价于 [A-z]
[:digit:] 匹配所有数字,等价于 [0-9]
[:alnum:] 数字和大小写字母
[:space:] 匹配水平和垂直空白字符
[^] 匹配指定字符范围外的任意单个字符
[^0-9] 匹配除数字以外,它等价于[^[:digit:]]
7.1.2 通配符示例
- 显示当前工作目录下所有以
arr
开头的文件
[root@openEuler ~]# ls a*
ahead arr1.sh arr2.sh arr3.sh
- 显示当前工作目录下所以在
arr
后有一个字符的文件
[root@openEuler ~]# ls
ahead arr1.sh arr2.sh arr3.sh arrbb.sh arrb.sh ips myfile arr.sh[root@openEuler ~]# ls arr?.sh
arr1.sh arr2.sh arr3.sh arrb.sh
- 显示当前工作目录下所有以
i
或m
开头的文件
[root@openEuler ~]# ls
ahead arr1.sh arr2.sh arr3.sh arrbb.sh arrb.sh arr.sh ips myfile[root@openEuler ~]# ls [im]*
ips myfile
- 显示当前工作目录下所有以字母开头的文件
[root@openEuler ~]# touch {1..5}
[root@openEuler ~]# ls
1 3 5 arr1.sh arr3.sh arrb.sh i m
2 4 ahead arr2.sh arrbb.sh arr.sh ips myfile[root@openEuler ~]# touch File{1,2}[root@openEuler ~]# ls
1 3 5 arr1.sh arr3.sh arrb.sh File1 i m
2 4 ahead arr2.sh arrbb.sh arr.sh File2 ips myfile[root@openEuler ~]# ls [a-zA-Z]*
ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
arr1.sh arr3.sh arrb.sh File1 i m[root@openEuler ~]# ls [[:alpha:]]*
ahead arr1.sh arr2.sh arr3.sh arrbb.sh arrb.sh arr.sh[root@openEuler ~]# ls [A-z]*
ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
arr1.sh arr3.sh arrb.sh File1 i m
- 显示所有以数字开头的文件
[root@openEuler ~]# ls
1 3 5 arr1.sh arr3.sh arrb.sh File1 i m
2 4 ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
[root@openEuler ~]# ls [0-9]*
1 2 3 4 5
[root@openEuler ~]# ls [[:digit:]]*
1 2 3 4 5
- 显示所有数字和字母开头的文件
[root@openEuler ~]# ls
1 3 5 arr1.sh arr3.sh arrb.sh File1 i m
2 4 ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
[root@openEuler ~]# ls [a-zA-Z0-9]*
1 3 5 arr1.sh arr3.sh arrb.sh File1 i m
2 4 ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
[root@openEuler ~]# ls [A-z0-9]*
1 3 5 arr1.sh arr3.sh arrb.sh File1 i m
2 4 ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
[root@openEuler ~]# ls [[:alnum:]]*
1 3 5 arr1.sh arr3.sh arrb.sh File1 i m
2 4 ahead arr2.sh arrbb.sh arr.sh File2 ips myfile
7.2 正则表达式
正则表达式是通过一些特殊字符的排列,用于查找、替换、删除一行或多行字符串。它的操作是针对于文件的内容,则前面讲的通配符是针对于文件和目录名的操作。
我们以前面讲的 *
号为例,来说明通配符和正则表达式的区别:如果*
是用于查找文件名或目录名时,表示可以匹配0到多个任意字符,如果*
用于查找文件的内容,则表示重复匹配前一个字符0到多次。
在 Shell 中,正则表达式分类两种:
- 基本正则表达式
- 扩展正则表达式
7.2.1 grep命令
grep 命令是用于查询或过滤字符的命令,它的语法格式如下:
Usage: grep [OPTION]... PATTERNS [FILE]...
Search for PATTERNS in each FILE.
命令的常用选项介绍:
-n, --line-number 显示行号
-o, --only-matching 只显示匹配的行
-q, --quiet, --silent 静默模式,没有任何输出,要获取内容需要与 $? 来配合使用。
-l, --files-with-matches 如果匹配成功,则只将文件名称打印出来,如果匹配失败,则通过会与 -rl 一起使用
-A, --after-context=NUM 如果匹配成功,则将匹配当前行及其之后 NUM 行一起打印输出
-B, --before-context=NUM 如果匹配成功,则将匹配当前行及其之前 NUM 行一起打印输出
-C, --context=NUM 如果匹配成功,则将匹配行及其前后 NUM 行一起打印输出
-c, --count 如果匹配成功,则将匹配到的行数打印输出
-E, --extended-regexp 正则扩展匹配,需要使用 grep -E 或者 egrep 命令才可以
-i, --ignore-case 忽略大小写匹配
-v, --invert-match 取反,打印不匹配的内容
-V, --version 显示版本信息
-w, --word-regexp 匹配单词
-x, --line-regexp 匹配行
-s, --no-messages 不显示关于不存在的或者无法读取文件错误信息
-r, --recursive 递归匹配
使用示例:
# 输出匹配的行号
[root@openEuler ~]# grep -n ro* /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin# 只输出匹配的内容
[root@openEuler ~]# grep -o redhat /etc/passwd
redhat
redhat
redhat
[root@openEuler ~]# grep -o root /etc/passwd
root
root
root
root# 打印匹配行及其后3行内容
[root@openEuler ~]# grep -A 3 adm /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown# 打印匹配行及其前3行内容
[root@openEuler ~]# grep -B 3 adm /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin# 打印匹配行及其前后3行内容
[root@openEuler ~]# grep -C 3 adm /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown# 匹配指定的单词
[root@openEuler ~]# grep -w adm /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin# 不区分大小写匹配
[root@openEuler ~]# grep -w DNS /etc/passwd
unbound:x:997:996:Unbound DNS resolver:/etc/unbound:/sbin/nologin
[root@openEuler ~]# grep -w dns /etc/passwd
[root@openEuler ~]# grep -wi dns /etc/passwd
unbound:x:997:996:Unbound DNS resolver:/etc/unbound:/sbin/nologin# 匹配除了nologin单词以外的所有内容
[root@openEuler ~]# grep -wv nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
7.2.2 基本正则表达式
基本正则表达式(Basic Regular Expression,BRE),又称为标准正则表达式,是最早制订的正则表达式规范,仅支持最基本的元字符集。基本正则表达式是POSIX规范制订的两种正则表达式语法标准之一,另外一种语法标准称为扩展正则表达式。
字符 | 含义 |
---|---|
^ | 在每行的开始进行匹配 |
$ | 在每行的末尾进行匹配 |
. | 对任何单个字符进行匹配 |
* | 对前一项进行0次或多次重复匹配 |
[str] | 对str中的任何单个字符进行匹配 |
[^str] | 对任何不在str中的单个字符进行匹配 |
[a-b] | 对a到b之间的任何字符进行匹配 |
\ | 忽略后面一个字符的特殊含义 |
使用示例:
- 在
/etc/passwd
文件中搜索以root
开头的内容
[root@openEuler ~]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
- 在
/etc/passwd
文件中搜索以nologin
结尾的所有行
[root@openEuler ~]# grep nologin$ /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
....output omitted....
- 在
~/passwd
文件中搜索b开头,n结尾,并且中间只有一个字符的所有行
[root@openEuler ~]# cat /etc/passwd > passwd
[root@openEuler ~]# echo ban:x::::: >> passwd
[root@openEuler ~]# grep b.n passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
.....output omitted.....
ban:x:::::
- 在
~/passwd
文件中搜索包含ro*
字符串的所有行
[root@openEuler ~]# cat /etc/passwd > passwd
[root@openEuler ~]# echo ban:x::::: >> passwd
[root@openEuler ~]# echo ro >> passwd
[root@openEuler ~]# echo roo >> passwd
[root@openEuler ~]# echo rooooooo >> passwd[root@openEuler ~]# grep ro* passwd
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
saslauth:x:998:76:Saslauthd user:/run/saslauthd:/sbin/nologin
unbound:x:997:996:Unbound DNS resolver:/etc/unbound:/sbin/nologin
libstoragemgmt:x:996:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:D-Bus:/var/run/dbus:/sbin/nologin
polkitd:x:995:993:User for polkitd:/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin
cockpit-ws:x:993:990:User for cockpit-ws:/:/sbin/nologin
chrony:x:992:989::/var/lib/chrony:/sbin/nologin
systemd-network:x:987:987:systemd Network Management:/:/usr/sbin/nologin
systemd-resolve:x:986:986:systemd Resolver:/:/usr/sbin/nologin
systemd-timesync:x:985:985:systemd Time Synchronization:/:/usr/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
ro
roo
rooooooo
- 在
~/passwd
文件中搜索能够匹配r[opu]*
的所有行
[root@openEuler ~]# grep r[opu]* ~/passwd
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
saslauth:x:998:76:Saslauthd user:/run/saslauthd:/sbin/nologin
unbound:x:997:996:Unbound DNS resolver:/etc/unbound:/sbin/nologin
libstoragemgmt:x:996:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:D-Bus:/var/run/dbus:/sbin/nologin
polkitd:x:995:993:User for polkitd:/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin
cockpit-ws:x:993:990:User for cockpit-ws:/:/sbin/nologin
chrony:x:992:989::/var/lib/chrony:/sbin/nologin
systemd-network:x:987:987:systemd Network Management:/:/usr/sbin/nologin
systemd-resolve:x:986:986:systemd Resolver:/:/usr/sbin/nologin
systemd-timesync:x:985:985:systemd Time Synchronization:/:/usr/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
ro
roo
rooooooo
[root@openEuler ~]# grep r[opu]. ~/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
saslauth:x:998:76:Saslauthd user:/run/saslauthd:/sbin/nologin
libstoragemgmt:x:996:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
dbus:x:81:81:D-Bus:/var/run/dbus:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin
chrony:x:992:989::/var/lib/chrony:/sbin/nologin
systemd-timesync:x:985:985:systemd Time Synchronization:/:/usr/sbin/nologin
roo
rooooooo
^$
表示空行,不是空格。
[root@openEuler ~]# grep -n ^$ passwd
4:
7:
8:
9:
10:
17:
18:
- 在
~/passwd
文件中匹配至少2个o
,最多4个o
的行
[root@openEuler ~]# grep -E "ro{2,4}" ~/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
roo
rooooooo
注意:要实现这个功能,我们需要添加 -E 选项,因为这是扩展正则表达式,基本正则表达的写法不能处理扩展正则表达式。
7.2.3 扩展正则表达式
扩展正则表达式(Extended Regular Expression,ERE)支持比基本正则表达式更多的元字符,但是扩展正则表达式对有些基本正则表达式所支持的元字符并不支持。前面介绍的元字符“^”、“$”、“.”、“*”、“[]”以及“[^]”
这6个元字符在扩展正则表达式都得到了支持,并且其意义和用法都完全相同,不再重复介绍。接下来重点介绍一下在扩展正则表达式中新增加的一些元字符。
字符 | 含义 |
---|---|
+ | 对前一项进行1次或多次重复匹配 |
? | 对前一项进行0次或1次重复匹配 |
{n} | 对前一项进行 n 次重复匹配 |
{n,} | 对前一项进行 n 次或更多次重复匹配 |
{,m} | 对前一项最多进行 m 次重复匹配 |
{n,m} | 对前一项至少匹配 n 次,最多匹配 m 次 |
(s|t) | 匹配s项或t项中的一项 |
注意:使用扩展正则表达时,可以使用
grep -E
命令,也可以使用egrp
命令,推荐使用 egrep 来处理扩展正则表达式
使用示例:
- 显示
/etc/passwd
文件中以bash
结尾的行;
[root@openEuler ~]# grep bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
[root@openEuler ~]# grep -E bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
[root@openEuler ~]# egrep bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
- 找出
/etc/passwd
文件中的三位或四位数;
[root@openEuler ~]# grep -E "[0-9]{3,4}" /etc/passwd
games:x:12:100:games:/usr/games:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
saslauth:x:998:76:Saslauthd user:/run/saslauthd:/sbin/nologin
unbound:x:997:996:Unbound DNS resolver:/etc/unbound:/sbin/nologin
libstoragemgmt:x:996:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
polkitd:x:995:993:User for polkitd:/:/sbin/nologin
setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin
cockpit-ws:x:993:990:User for cockpit-ws:/:/sbin/nologin
chrony:x:992:989::/var/lib/chrony:/sbin/nologin
systemd-network:x:987:987:systemd Network Management:/:/usr/sbin/nologin
systemd-resolve:x:986:986:systemd Resolver:/:/usr/sbin/nologin
systemd-timesync:x:985:985:systemd Time Synchronization:/:/usr/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash[root@openEuler ~]# egrep "[[:digit:]]{3,4}" /etc/passwd
games:x:12:100:games:/usr/games:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
saslauth:x:998:76:Saslauthd user:/run/saslauthd:/sbin/nologin
unbound:x:997:996:Unbound DNS resolver:/etc/unbound:/sbin/nologin
libstoragemgmt:x:996:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
polkitd:x:995:993:User for polkitd:/:/sbin/nologin
setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin
cockpit-ws:x:993:990:User for cockpit-ws:/:/sbin/nologin
chrony:x:992:989::/var/lib/chrony:/sbin/nologin
systemd-network:x:987:987:systemd Network Management:/:/usr/sbin/nologin
systemd-resolve:x:986:986:systemd Resolver:/:/usr/sbin/nologin
systemd-timesync:x:985:985:systemd Time Synchronization:/:/usr/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
- 找出
/etc/grub2.cfg
文件中,以至少一个空白字符开头,后面又跟了非空白字符的行;
[root@openEuler ~]# egrep "^[[:space:]]+[^[:space:]]+" /etc/grub2.cfgload_env -f ${config_directory}/grubenvload_envset default="${next_entry}"set next_entry=save_env next_entryset boot_once=trueset default="${saved_entry}"menuentry_id_option="--id"menuentry_id_option=""set saved_entry="${prev_saved_entry}"...output omitted...
- 找出
"netstat -tan"
命令的结果中,以‘LISTEN’
后跟0个或多个空白字符结尾的行;
[root@openEuler ~]# netstat -tan|grep -E "LISTEN[[:space:]]*$"
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::111 :::* LISTEN
- 找出
"fdisk -l"
命令的结果中,取出硬盘路径;
[root@openEuler ~]# fdisk -l|grep -E "Disk[[:space:]]/[^[:space:]]+"
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
Disk /dev/mapper/openeuler-root: 45.07 GiB, 48393879552 bytes, 94519296 sectors
Disk /dev/mapper/openeuler-swap: 3.93 GiB, 4215275520 bytes, 8232960 sectors
- 找出
"ldd /usr/bin/cat"
命令的结果中文件路径;
[root@openEuler ~]# ldd /usr/bin/cat | egrep "/([a-z,0-9,.]|-)+"libc.so.6 => /usr/lib64/libc.so.6 (0x00007f8aa4d2e000)/lib64/ld-linux-x86-64.so.2 (0x00007f8aa4f49000)[root@openEuler ~]# ldd /usr/bin/cat | egrep "/[^[:space:]]+"libc.so.6 => /usr/lib64/libc.so.6 (0x00007fe49806e000)/lib64/ld-linux-x86-64.so.2 (0x00007fe498289000)
- 找出
/proc/meminfo
文件中,所有以大写或小写s开头的行
[root@openEuler ~]# cat /proc/meminfo | egrep "^(S|s)"
SwapCached: 0 kB
SwapTotal: 4116476 kB
SwapFree: 4116476 kB
Shmem: 8844 kB
Slab: 86148 kB
SReclaimable: 39424 kB
SUnreclaim: 46724 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB[root@openEuler ~]# egrep "^(S|s)" /proc/meminfo
SwapCached: 0 kB
SwapTotal: 4116476 kB
SwapFree: 4116476 kB
Shmem: 8844 kB
Slab: 86132 kB
SReclaimable: 39424 kB
SUnreclaim: 46708 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
- 显示当前系统上
root
、redhat
或spark
用户的相关信息;
[root@openEuler ~]# egrep "(root|redhat|spark)" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
redhat:x:1000:1000:redhat:/home/redhat:/bin/bash
echo
输出一个绝对路径,使用egrep
取出其基名;
[root@openEuler ~]# echo /usr/local/cat | egrep "^/[a-z]+"
/usr/local/cat
- 找出
ifconfig
命令结果中的1-255之间的整数;
[root@openEuler ~]# ifconfig | egrep -w "[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-5][0-5]"inet 192.168.72.150 netmask 255.255.255.0 broadcast 192.168.72.255inet6 fe80::20c:29ff:fe4f:96ec prefixlen 64 scopeid 0x20<link>ether 00:0c:29:4f:96:ec txqueuelen 1000 (Ethernet)RX packets 18333 bytes 17737370 (16.9 MiB)TX packets 5505 bytes 581056 (567.4 KiB)
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>
- 找出
ifconfig
命令输出中的所有IP地址
[root@openEuler ~]# ifconfig | egrep -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
192.168.72.150
255.255.255.0
192.168.72.255
127.0.0.1
255.0.0.0
相关文章:

7. 通配符和正则表达式
文章目录 7.1 通配符7.1.1 通配符介绍7.1.2 通配符示例 7.2 正则表达式7.2.1 grep命令7.2.2 基本正则表达式7.2.3 扩展正则表达式 7.1 通配符 在 Shell 中通配符用于查找文件名和目录名。它是由 Shell 处理的,只会出现在命令的参数中。 7.1.1 通配符介绍 * 匹…...

ROS2底层机制源码分析
init ->init_and_remove_ros_arguments ->init ->Context::init 保存初始化传入的信号 ->install_signal_handlers→SignalHandler::install 开线程响应信号 ->_remove_ros_arguments 移除ros参数 ->SingleNodeManager::instance().…...

超越 Transformer开启高效开放语言模型的新篇章
在人工智能快速发展的今天,对于高效且性能卓越的语言模型的追求,促使谷歌DeepMind团队开发出了RecurrentGemma这一突破性模型。这款新型模型在论文《RecurrentGemma:超越Transformers的高效开放语言模型》中得到了详细介绍,它通过…...

快速排序-Hoare 递归版 C语言
个人主页点这里~ 快速排序的简介: 快速排序是Hoare于1962年提出的一种 二叉树结构 的 交换 排序方法,其基本思想为:任取待排序元素序列中 的某元素作为 基准值 ,按照该排序码将待排序集合分割成 两子序列 , 左子序列中所有元素均 …...

C语言经典指针运算笔试题图文解析
指针运算常常出现在面试题中,画图解决是最好的办法。 题目1: #include <stdio.h> int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } //程序的结果是什么&…...

使用 KubeKey v3.1.1 离线部署原生 Kubernetes v1.28.8 实战
今天,我将为大家实战演示,如何基于操作系统 openEuler 22.03 LTS SP3,利用 KubeKey 制作 Kubernetes 离线安装包,并实战离线部署 Kubernetes v1.28.8 集群。 实战服务器配置 (架构 1:1 复刻小规模生产环境,配置略有不…...

DOS 命令
Dos: Disk Operating System 磁盘操作系统, 简单说一下 windows 的目录结构。 ..\ 到上一级目录 常用的dos 命令: 查看当前目录是有什么内容 dir dir d:\abc2\test200切换到其他盘下:盘符号 cd : change directory 案例演示:切换…...

如何用Java程序实现一个简单的消息队列?
在Java程序中,可以使用内置的java.util.concurrent.BlockingQueue作为消息队列存放的容器,来实现一个简单的消息队列。 具体实现如下,在这个例子中,我们创建了一个生产者线程和一个消费者线程,他们共享同一个阻塞队列…...

OpenAI 宕机事件:GPT 停摆的影响与应对
引言 2024年6月4日,OpenAI 的 GPT 模型发生了一次全球性的宕机,持续时间长达8小时。此次宕机不仅影响了OpenAI自家的服务,还导致大量用户涌向竞争对手平台,如Claude和Gemini,结果也导致这些平台出现故障。这次事件的广…...

linux常用的基础命令
ls - 列出目录内容。 cd - 更改目录。 pwd - 打印当前工作目录。 mkdir - 创建新目录。 rmdir - 删除空目录。 touch - 创建新文件或更新现有文件的时间戳。 cp - 复制文件或目录。 mv - 移动或重命名文件或目录。 rm - 删除文件或目录。 cat - 显示文件内容。 more - 分页显示…...

618家用智能投影仪推荐:这个高性价比品牌不容错过
随着科技的不断进步,家庭影院的概念已经从传统的大屏幕电视逐渐转向了更为灵活和便携的家用智能投影仪。随着618电商大促的到来,想要购买投影仪的用户们也开始摩拳擦掌了。本文将从投影仪的基础知识入手,为您推荐几款性价比很高的投影仪&…...

自愿离婚协议书
自愿离婚协议书 男方(夫): 女方(妻): 双方现因 原因,导致夫妻情感已破裂,自愿离婚…...

WPS JSA 宏脚本入门和样例
1入门 WPS window版本才支持JSA宏的功能。 可以自动化的操作文档中的一些内容。 参考文档: WPS API 参考文档:https://open.wps.cn/previous/docs/client/wpsLoad 微软的Word API文档:Microsoft.Office.Interop.Word 命名空间 | Microsoft …...

Printing and Exporting
打印 大多数DevExpress。NET控件(XtraGrid、XtraPivotGrid、XttraTreeList、XtraScheduler、XtraCharts)提供打印和导出功能。 所有可打印的DevExpress.NET控件是使用XtraPrinting库提供的方法打印的。 若要确定预览和打印选项是否可用,请检…...

c++【入门】正多边形每个内角的度数
限制 时间限制 : 1 秒 内存限制 : 128 MB 题目 根据多边形内角和定理,正多边形内角和等于:(n - 2)180(n大于等于3且n为整数)(如下图所示是三角形、四边形、五边形、六边形的形状)…...

spring boot3登录开发-邮箱登录/注册接口实现
⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 上文衔接 内容简介 功能分析 所需依赖 邮箱验证登录/注册实现 1.创建交互对象 2.登录注册业务逻辑实…...

数据结构-二叉搜索树
二叉搜索树:BST(Binary Search Tree) 二叉搜索树是二叉树,可以为空,如果不为空,满足以下性质: 非空左子树的所有键值小于其根节点的键值非空右子树的所有键值大于其根节点的键值左、右字数本身也都是二叉搜索树 二叉…...

JUnit:Java开发者不可或缺的单元测试框架
在软件开发过程中,测试是确保代码质量的关键环节。单元测试作为测试体系的基础,对提升代码质量、降低bug率、增强软件稳定性具有重要作用。JUnit 作为 Java 语言事实上的标准单元测试框架,已经成为 Java 开发者进行单元测试的首选工具。本文将…...

NG32单片机GPIO口配置方式
目录 一、引言 二、GPIO口基本结构 三、GPIO口配置方式 四、工作原理 五、总结 一、引言 NG32单片机是一款集成度高、功能强大的微控制器。其中,GPIO(General Purpose Input/Output)口作为单片机与外部设备通信的重要接口,具…...

SpringCloud-OpenFeign拓展-连接池、最佳使用方法、日志输出
目录 1 OpenFeign连接池 1.1 常见连接类型 1.2 连接池使用方法 1.2.1 引入依赖 1.2.2 开启连接池功能 1.2.3 配置完成,重启实例即可,底层将更改设置。 2 OpenFeign最佳使用方法 2.1 每个微服务都是单独的project,内部有三个独立模块 …...

跨链协议中Cosmos IBC、Polkadot/XCM、Celer Network的区别以及用途
跨链协议是实现不同区块链之间通信和价值转移的关键技术。Cosmos IBC、Polkadot/XCM 和 Celer Network 是三个在跨链领域内具有代表性的协议,它们各自有着独特的设计理念和应用场景。下面是这三个协议的详细对比: Cosmos IBC (Inter-Blockchain Communi…...

电子画册制作与传统画册相比,有哪些优势?
在当今数字化时代,电子画册作为一种新兴的媒体形式,其制作与传统画册相比具有显著的优势。以下是对这些优势的详细探讨。 首先,电子画册的制作过程通常更加便捷和经济。相较于传统画册需要经历的繁琐的印刷过程,电子画册的制作大多…...

postman如何导入证书
1、打开postman,点击Settings。 2、添加证书。 3、填写要访问平台的URL路径及端口、证书文件、证书密码。 4、添加完之后即可立即调用postman。...

RocketMQ教程(八):RocketMQ的集群搭建
传送门:RocketMQ教程汇总,让你从入门到精通 集群架构 RocketMQ 的各个组件都可以搭建成集群部署,Broker 还可以搭建成主从架构,下面介绍的主要是 Broker 集群。 数据复制策略 复制策略是Broker的Master与Slave间的数据同步方式。分为同步复制与异步复制: 同步复制 消…...

线上观看人次2万+!「飞天技术沙龙-CentOS 迁移替换专场」北京站圆满结束
5 月 29 日,阿里云联合龙蜥社区共同举办的「飞天技术沙龙-CentOS 迁移替换专场」于北京圆满结束,在线观看人次 2 万。本次活动现场汇聚了来自浪潮信息、Intel、龙芯、统信软件、红旗软件、电子五所等多家操作系统产业头部企业和机构,大家围绕…...

Docker基本架构概览-1
Docker基本架构概览 Docker架构 Docker采用客户端-服务器(C/S)架构,主要组件包括: Docker Client 用户与Docker交互的接口,发送命令到Docker守护进程。 Docker Daemon 运行在后台,接收并处理Docker客户端…...

OZON云仓靠谱吗,OZON云仓垫资提货模式
在电商飞速发展的今天,物流仓储成为了支撑整个电商生态的重要基石。OZON云仓作为市场上新兴的仓储物流服务提供商,凭借其先进的技术和灵活的服务模式,受到了不少电商卖家和消费者的关注。但随之而来的是一系列疑问:OZON云仓靠谱吗…...

数据集笔记:DGraph 大规模动态图数据集
dgraph-web (xinye.com) 1 数据集介绍 DGraph 是一个有向无权的动态图,包含超过 370 万个节点以及 430 万条动态边DGraph 中的节点表示金融借贷用户,有向边表示紧急联系人关系,每个节点包含脱敏后的属性特征,以及表示是否为金融…...

一些常用的git指令总结
1、git add 文件名 :该 命令可将该文件的修改添加到暂存区 比如:我刚刚修改了my_test.cpp文件,这时就可以使用git add my_test.cpp. 就将该修改添加到了暂存区。 2、git commit -m "......说明" 就是将当前的修改记录提交到本地…...

【HarmonyOS】遇见的问题汇总
一、当前编辑的页面,预览打不开 1、问题说明 当前编辑的页面,预览打不开,日志提示如下: Route information is not configured for the current page. To avoid possible redirection issues, configure route information for…...