行处理工具
grep:用于查找文件里符合条件的字符串或正则表达式。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
-i
:忽略大小写进行匹配。-v
:反向查找,只打印不匹配的行。-n
:显示匹配行的行号。-r
:递归查找子目录中的文件。-l
:只打印匹配的文件名。-c
:只打印匹配的行数。- -A : 打印搜索结果后几行的数据
- -B : 打印搜索结果前几行的数据
- -C : 打印搜索结果前后几行的数据
grep --color=auto passwd #高亮显示过滤内容
alias grep='grep --color=auto' #别名
alias grep='grep --color=auto' >> /etc/bashrc #写入配置文件,使其一直生效
source /etc/bashrc #读取配置文件
grep 'a*' passwd
vim passwd
cat passwd | grep 'bash$' #寻找以bash结尾的行
cat passwd | grep -ni 'bash$' #寻找不区分大小写以bash结尾的行,同时打印行号
cat passwd | grep -niv 'bash$' #反选不区分大小写以bash结尾的行,同时打印行号
grep -nB 2 'ftp' passwd #打印以ftp过滤的行及其前两行,同时打印行号
grep -nB 2 '^ftp' passwd #打印以ftp开头过滤的行及其前两行,同时打印行号
grep -nA 2 '^ftp' passwd #打印以ftp过滤的行及其前两行,同时打印行号
grep -nB5 2 '^ftp' passwd #打印以ftp过滤的行及其前两行,同时打印行号
grep -A 2 '^ftp' passwd #打印以ftp过滤的行及其后两行
grep -C 2 '^ftp' passwd ##打印以ftp过滤的行及其前后两行
grep -o '^ftp' passwd #只打印ftp关键字
cut:类似于awk,可以获取某列的数值,或可以获取每行从某个字符到某个字符的全部字符。
- -c :以字符为单位进行分割。
- -d :自定义分隔符,默认为制表符。
- -f :与-d一起使用,指定显示哪个区域。
[root@ecs-shell ~]# cat 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
halt:x:7:0:halt:/sbin:/sbin/halt
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:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
[root@ecs-shell ~]# cat passwd | cut -d":" -f1 #获取第一列全部的username
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
postfix
sshd
chrony
tcpdump
tss
[root@ecs-shell ~]# cat passwd | awk -F":" '{print $1}' #awk也可以做到
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
postfix
sshd
chrony
tcpdump
tss
[root@ecs-shell ~]# cat passwd | cut -d":" -f1,7 #打印第一列和第七列
root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin
lp:/sbin/nologin
sync:/bin/sync
shutdown:/sbin/shutdown
halt:/sbin/halt
mail:/sbin/nologin
operator:/sbin/nologin
games:/sbin/nologin
ftp:/sbin/nologin
nobody:/sbin/nologin
systemd-network:/sbin/nologin
dbus:/sbin/nologin
polkitd:/sbin/nologin
postfix:/sbin/nologin
sshd:/sbin/nologin
chrony:/sbin/nologin
tcpdump:/sbin/nologin
tss:/sbin/nologin
[root@ecs-shell ~]# cat passwd | awk -F":" '{print $1,$NF}' #awk打印第一列和第七列
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
sync /bin/sync
shutdown /sbin/shutdown
halt /sbin/halt
mail /sbin/nologin
operator /sbin/nologin
games /sbin/nologin
ftp /sbin/nologin
nobody /sbin/nologin
systemd-network /sbin/nologin
dbus /sbin/nologin
polkitd /sbin/nologin
postfix /sbin/nologin
sshd /sbin/nologin
chrony /sbin/nologin
tcpdump /sbin/nologin
tss /sbin/nologin
[root@ecs-shell ~]# cat passwd | cut -c 1-5 #获取每行的第1-5个字符
root:
bin:x
daemo
adm:x
lp:x:
sync:
shutd
halt:
mail:
opera
games
ftp:x
nobod
syste
dbus:
polki
postf
sshd:
chron
tcpdu
tss:x
[root@ecs-shell ~]# cat passwd | cut -c 10- #获取每行的第10个字符到每行结束
0:root:/root:/bin/bash
:bin:/bin:/sbin/nologin
2:2:daemon:/sbin:/sbin/nologin
:adm:/var/adm:/sbin/nologin
lp:/var/spool/lpd:/sbin/nologin
0:sync:/sbin:/bin/sync
x:6:0:shutdown:/sbin:/sbin/shutdown
0:halt:/sbin:/sbin/halt
12:mail:/var/spool/mail:/sbin/nologin
x:11:0:operator:/ROOT:/sbin/nologin
2:100:games:/usr/games:/sbin/nologin
50:FTP User:/var/ftp:/sbin/nologin
99:99:Nobody:/:/sbin/nologin
etwork:x:192:192:systemd Network Management:/:/sbin/nologin
:81:System message bus:/:/sbin/nologin
:999:998:User for polkitd:/:/sbin/nologin
:89:89::/var/spool/postfix:/sbin/nologin
:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
998:996::/var/lib/chrony:/sbin/nologin
:72:72::/:/sbin/nologin
59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
#相关命令:
cat passwd | awk -F":" '{print $1}'
cat passwd | cut -d":" -f1,7
cat passwd | awk -F":" '{print $1,$NF}'
cat passwd | cut -c 1-5
cat passwd | cut -c 10-
sort: sort 命令用于将文本文件内容加以排序。
- -b 忽略每行前面开始出的空格字符。
- -n 依照数值的大小排序。
- -u 意味着是唯一的(unique),输出的结果是去完重了的。
- -o<输出文件> 将排序后的结果存入指定的文件。
- -r 以相反的顺序来排序。
[root@ecs-shell ~]# cat 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
halt:x:7:0:halt:/sbin:/sbin/halt
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:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
[root@ecs-shell ~]# cat passwd | sort -n -t":" -k3 #查看以":"分割的,第三列从小向大排序的内容
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
halt:x:7:0:halt:/sbin:/sbin/halt
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
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
[root@ecs-shell ~]# cat passwd | sort -nr -t":" -k3 #查看以":"分割的,第三列从大向小排序的内容
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
operator:x:11:0:operator:/ROOT:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
[root@ecs-shell ~]# cat 3.txt
aaa
111
222
111
222
222
sda
dsdsa
vvv
[root@ecs-shell ~]# cat 3.txt | sort -u #去掉重复出现的行
111
222
aaa
dsdsa
sda
vvv
#相关命令
cat passwd
cat passwd | sort -n -t":" -k3
cat passwd | sort -nr -t":" -k3
uniq:uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
- -c或--count 在每列旁边显示该行重复出现的次数。
- -d或--repeated 仅显示重复出现的行列。
- -u或--unique 仅显示出一次的行列。
- [输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;
- [输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。
[root@ecs-shell ~]# cat 3.txt #查看源文件
aaa
111
222
111
222
222
sda
dsdsa
vvv
[root@ecs-shell ~]# cat 3.txt | uniq #对源文件中连续重复的行去重
aaa
111
222
111
222
sda
dsdsa
vvv
[root@ecs-shell ~]# cat 3.txt | uniq -c #对重复的行计数
1 aaa
1 111
1 222
1 111
2 222
1 sda
1 dsdsa
1 vvv
1
[root@ecs-shell ~]# cat 3.txt | uniq -d #打印出其中连续重复的行
222
#相关命令
cat 3.txt | uniq
cat 3.txt | uniq -c
cat 3.txt | uniq -d
tee: tee命令用于读取标准输入的数据,并将其内容输出成文件。
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
- -a或--append 附加到既有文件的后面,而非覆盖它.
[root@ecs-shell ~]# echo "helloworld" | tee abc.txt #标准覆盖输到我们的文件和屏幕上
helloworld
[root@ecs-shell ~]# echo "helloworld" | tee -a abc.txt #标准追加输出到我们的文件和屏幕上
helloworld
[root@ecs-shell ~]# cat abc.txt
helloworld
helloworld
[root@ecs-shell ~]# cat vsftpd.conf | grep -v "^#" | grep -v "^$" | tee 4.txt
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
echo "helloworld" | tee 1.txt
cat 1.txt
echo "abc" | tee 1.txt
cat 1.txt
cat vsftpd.conf | grep -v "^#" | grep -v "^$" | tee 4.txt
diff:Linux diff 命令用于比较文件的差异。
diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。
- -c 上下文模式
- -u 合并模式
[root@ecs-shell ~]# diff 1.txt 2.txt #拿到的是一个操作信息,可以使第一个文件变为第二个文件。
3c3 #3c3是指第一个文件第三行通过改变可以变成第二个文件第三行
< write_enable=YES #第一个文件第三行
---
> write_enable=NO #第二个文件第三行
8,9c8 #8,9c8是指第一个文件通过改变第八,九行可以变成第八行
< ooooooo
< xferlog_std_format=YES
---
> xferlog_std_format=NO
10a10 #10a10指第十行增加第二个文件第十行的内容
> aaa #第二个文件第十行内容
12c12,13 #同上
< pam_service_name=vsftpd
---
> bb
> ccpam_service_name=vsftpd
[root@ecs-shell ~]# cat 1.txt
anonymous_enable=YES
local_enable=YES
local_umask=022
cccca
dirmessage_enable=YES
connect_from_port_20=YES
xferlog_std_format=NO
listen=NO
oooooooop
listen_ipv6=YES
ccpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
[root@ecs-shell ~]# cat 2.txt
anonymous_enable=YES
local_enable=YES
write_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=NO
listen=NO
aaa
listen_ipv6=YES
bb
ccpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#对两个文件进行一定修改后,使用-c模式来比较
[root@ecs-shell ~]# diff -c 1.txt 2.txt
*** 1.txt 2023-12-06 10:56:46.672339322 +0800 #修改时间
--- 2.txt 2023-12-04 22:54:27.956996693 +0800 #修改时间
***************
*** 1,13 **** #第一个文件的行数
anonymous_enable=YES
local_enable=YES
local_umask=022
- cccca #第一个文件删除此行
dirmessage_enable=YES
connect_from_port_20=YES
xferlog_std_format=NO
listen=NO
! oooooooop #将此行改为“ aaa ”
listen_ipv6=YES
ccpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
--- 1,15 ---- #第二个文件的行数
anonymous_enable=YES
local_enable=YES
+ write_enable=NO #第一个文件加上此行
local_umask=022
dirmessage_enable=YES
+ xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=NO
listen=NO
! aaa
listen_ipv6=YES
+ bb #第一个文件加上此行
ccpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#使用-u来比较
[root@ecs-shell ~]# diff -u 1.txt 2.txt
--- 1.txt 2023-12-06 10:56:46.672339322 +0800
+++ 2.txt 2023-12-04 22:54:27.956996693 +0800
@@ -1,13 +1,15 @@
anonymous_enable=YES
local_enable=YES
+write_enable=NO #加上此行
local_umask=022
-cccca #删除此行
dirmessage_enable=YES
+xferlog_enable=YES #加上此行
connect_from_port_20=YES
xferlog_std_format=NO
listen=NO
-oooooooop #删除此行
+aaa #加此行
listen_ipv6=YES
+bb #加此行
ccpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#我们也可以基于diff对两个文件夹进行比较:
[root@ecs-shell ~]# ll test1
total 0
-rw-r--r-- 1 root root 0 Dec 6 11:05 file1
-rw-r--r-- 1 root root 0 Dec 6 11:05 file2
-rw-r--r-- 1 root root 0 Dec 6 11:05 file3
-rw-r--r-- 1 root root 0 Dec 6 11:05 file4
-rw-r--r-- 1 root root 0 Dec 6 11:05 file5
[root@ecs-shell ~]# ll test2
total 0
-rw-r--r-- 1 root root 0 Dec 6 11:05 file1
-rw-r--r-- 1 root root 0 Dec 6 11:05 file2
-rw-r--r-- 1 root root 0 Dec 6 11:05 file3
-rw-r--r-- 1 root root 0 Dec 6 11:05 test1
-rw-r--r-- 1 root root 0 Dec 6 11:05 test2
-rw-r--r-- 1 root root 0 Dec 6 11:05 test3
[root@ecs-shell ~]# diff test1 test2
Only in test1: file4
Only in test1: file5
Only in test2: test1
Only in test2: test2
Only in test2: test3
#diff还可以搭配patch补丁工具使用:可以直接使文件1变为文件二
[root@ecs-shell ~]# diff 1.txt 2.txt > file.patch
[root@ecs-shell ~]# patch 1.txt file.patch
patching file 1.txt
[root@ecs-shell ~]# diff 1.txt 2.txt
[root@ecs-shell ~]# cat 1.txt
anonymous_enable=YES
local_enable=YES
write_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=NO
listen=NO
aaa
listen_ipv6=YES
bb
ccpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
[root@ecs-shell ~]# cat 2.txt
anonymous_enable=YES
local_enable=YES
write_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=NO
listen=NO
aaa
listen_ipv6=YES
bb
ccpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
paste:paste 命令用于合并文件的列
paste 指令会把每个文件以列对列的方式,一列列地加以合并。
- -d<间隔字符>或--delimiters=<间隔字符> 用指定的间隔字符取代跳格字符。
- -s或--serial 串列进行而非平行处理。
- --help 在线帮助。
- --version 显示帮助信息。
- [文件…] 指定操作的文件路径
[root@ecs-shell ~]# cat 4.txt
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
[root@ecs-shell ~]# paste 3.txt 4.txt
aaa anonymous_enable=YES
111 local_enable=YES
222 write_enable=YES
111 local_umask=022
222 dirmessage_enable=YES
222 xferlog_enable=YES
sda connect_from_port_20=YES
dsdsa xferlog_std_format=YES
vvv listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#-s选项 把每个文件当一行输出
[root@ecs-shell ~]# paste -s 3.txt 4.txt
aaa 111 222 111 222 222 sda dsdsa vvv
anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
#-d选项可以定义之间的分隔符
#定义|为分隔符
[root@ecs-shell ~]# paste -d"|" 3.txt 4.txt
aaa|anonymous_enable=YES
111|local_enable=YES
222|write_enable=YES
111|local_umask=022
222|dirmessage_enable=YES
222|xferlog_enable=YES
sda|connect_from_port_20=YES
dsdsa|xferlog_std_format=YES
vvv|listen=NO
|listen_ipv6=YES
|pam_service_name=vsftpd
|userlist_enable=YES
|tcp_wrappers=YES
#定义":"为分隔符
[root@ecs-shell ~]# paste -d":" 3.txt 4.txt
aaa:anonymous_enable=YES
111:local_enable=YES
222:write_enable=YES
111:local_umask=022
222:dirmessage_enable=YES
222:xferlog_enable=YES
sda:connect_from_port_20=YES
dsdsa:xferlog_std_format=YES
vvv:listen=NO
:listen_ipv6=YES
:pam_service_name=vsftpd
:userlist_enable=YES
:tcp_wrappers=YES
tr: tr 命令用于转换或删除文件中的字符。
tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
- -c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
- -d, --delete:删除指令字符
- -s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
- -t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
- --help:显示程序用法信息
- --version:显示程序本身的版本信息
[root@ecs-shell ~]# cat 1.txt
anonymous_enable=YES
local_enable=YES
write_enable=NO
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=NO
listen=NO
aaa
listen_ipv6=YES
bb
ccpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
#使用NO去替换YES
[root@ecs-shell ~]# cat 1.txt | tr "YES" "NO"
anonymous_enable=NOO
local_enable=NOO
write_enable=NO
local_umask=022
dirmessage_enable=NOO
xferlog_enable=NOO
connect_from_port_20=NOO
xferlog_std_format=NO
listen=NO
aaa
listen_ipv6=NOO
bb
ccpam_service_name=vsftpd
userlist_enable=NOO
tcp_wrappers=NOO
#使用“NO ”去替换yes
[root@ecs-shell ~]# cat 1.txt | tr "YES" "NO "
anonymous_enable=NO
local_enable=NO
write_enable=NO
local_umask=022
dirmessage_enable=NO
xferlog_enable=NO
connect_from_port_20=NO
xferlog_std_format=NO
listen=NO
aaa
listen_ipv6=NO
bb
ccpam_service_name=vsftpd
userlist_enable=NO
tcp_wrappers=NO
#将所有小写字母换成大写
[root@ecs-shell ~]# cat 1.txt | tr "[a-z]" "[A-Z]"
ANONYMOUS_ENABLE=YES
LOCAL_ENABLE=YES
WRITE_ENABLE=NO
LOCAL_UMASK=022
DIRMESSAGE_ENABLE=YES
XFERLOG_ENABLE=YES
CONNECT_FROM_PORT_20=YES
XFERLOG_STD_FORMAT=NO
LISTEN=NO
AAA
LISTEN_IPV6=YES
BB
CCPAM_SERVICE_NAME=VSFTPD
USERLIST_ENABLE=YES
TCP_WRAPPERS=YES
#要实现如上的效果,也可以这样写
[root@ecs-shell ~]# tr "[a-z]" "[A-Z]"< 1.txt
ANONYMOUS_ENABLE=YES
LOCAL_ENABLE=YES
WRITE_ENABLE=NO
LOCAL_UMASK=022
DIRMESSAGE_ENABLE=YES
XFERLOG_ENABLE=YES
CONNECT_FROM_PORT_20=YES
XFERLOG_STD_FORMAT=NO
LISTEN=NO
AAA
LISTEN_IPV6=YES
BB
CCPAM_SERVICE_NAME=VSFTPD
USERLIST_ENABLE=YES
TCP_WRAPPERS=YES
#将数字换为“@”
[root@ecs-shell ~]# tr '0-9' '@' <1.txt
anonymous_enable=YES
local_enable=YES
write_enable=NO
local_umask=@@@
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_@@=YES
xferlog_std_format=NO
listen=NO
aaa
listen_ipv@=YES
bb
ccpam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
tr -d 是直接删除掉匹配到的字符
#删除所有小写字母
[root@ecs-shell ~]# cat passwd | tr -d "a-z"
::0:0::/://
::1:1::/://
::2:2::/://
::3:4:://://
::4:7::///://
::5:0::/://
::6:0::/://
::7:0::/://
::8:12::///://
::11:0::/ROOT://
::12:100:://://
::14:50:FTP U://://
::99:99:N:/://
-::192:192: N M:/://
::81:81:S :/://
::999:998:U :/://
::89:89::///://
::74:74:P- SSH:///://
::998:996::///://
::72:72::/://
::59:59:A ://://
#删除所有大写字母
[root@ecs-shell ~]# cat passwd | tr -d "A-Z"
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
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50: ser:/var/ftp:/sbin/nologin
nobody:x:99:99:obody:/:/sbin/nologin
systemd-network:x:192:192:systemd etwork anagement:/:/sbin/nologin
dbus:x:81:81:ystem message bus:/:/sbin/nologin
polkitd:x:999:998:ser for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:rivilege-separated :/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
tss:x:59:59:ccount used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
#删除所有字母和数字
[root@ecs-shell ~]# cat passwd | tr -d "A-Za-z1-9"
::0:0::/://
:::::/://
:::::/://
::::://://
:::::///://
:::0::/://
:::0::/://
:::0::/://
:::::///://
:::0::/://
:::00:://://
:::0: ://://
:::::/://
-:::: :/://
:::: :/://
:::: :/://
:::::///://
::::- :///://
:::::///://
:::::/://
:::: ://://
#缩减连续重复的字符
[root@ecs-shell ~]# tr -s "a-z" < passwd
rot:x:0:0:rot:/rot:/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/spol/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spol/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:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System mesage bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spol/postfix:/sbin/nologin
shd:x:74:74:Privilege-separated SSH:/var/empty/shd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
ts:x:59:59:Acount used by the trousers package to sandbox the tcsd daemon:/dev/nul:/sbin/nologin
ifconfig
mkdir test
touch file
touch file{0..9}
touch file1{0-4}
touch file1{0-4}.jpg
ll
cp file* test/
ll test/
ls
rm file*
rm -r file*
yy
y
cd test/
ls
rm file1{0-4}
rm file1{0-4}.jpg
ls
touch file1{0..4}.jpg
ls file[123]
ls file[123].jpg
ls file[0-9]
ls file*
ls file[1-19]
touch file-
ls file[1-19]
ls file[2-19]
ls file[2-29]
ls -l file[!0-9]
ls -l file[!0-2]
ls -l file[!0-3]
ls -l file[!0-4]
ls -l file[!0-5]
ls -l file[!0-6]
ll file{1,2,3,-,14}
ll file{1,2,3,-,13}
ll
ll file{1..13}.jpg
ll file{1..13}.*
ll file{1..13}*
date +%F
echo "$date"
echo "$(date)"
echo "$(date +%F)"
echo "$(date +%Y:%m:%d)"
echo `$(date +%Y)`
echo `$date +%Y`
echo `$date +%F`
echo `date +%F`
echo "$(date +%F)"
cat /etc/shell
cat /etc/shells
ll /bin/bash
ll /bin/sh
/bin/dash
/bin/sh
ls
cd ..
mkdir shell
cd shell/
vim 1.sh
sh 1.sh
vim 1.sh
bash -x 1.sh
bash -n 1.sh
source 1.sh
ll
man rename
cd
ls
cd test/
ls
rename file1{1..4}.jpg test{1..4}.jpg
ls
rename file1{1..4}.jpg test{1..4}.jpg file1*.jpg
ls
rename file1 test1 file1?.jpg
ls
history
/bin/bsh
/bin/bash
ps
echo $A
env
ps
/bin/bsh
/bin/bash
ls
ps
cd ../shell/
A=hello
echo $A
export $A
export A
env | grep A
ls
history
" '{print $NF}'
标签:sbin,cut,grep,NO,nologin,tr,enable,YES,root
From: https://www.cnblogs.com/rallina/p/17930965.html