0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

行处理工具

马哥Linux运维 来源:马哥Linux运维 2025-01-03 09:32 次阅读

行处理工具

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   #源文件内容
root0root:/root:/bin/bash
bin1bin:/bin:/sbin/nologin
daemon2daemon:/sbin:/sbin/nologin
adm3adm:/var/adm:/sbin/nologin
lp4lp:/var/spool/lpd:/sbin/nologin
sync5sync:/sbin:/bin/sync
shutdown6shutdown:/sbin:/sbin/shutdown
halt7halt:/sbin:/sbin/halt
mail8mail:/var/spool/mail:/sbin/nologin
operator11operator:/ROOT:/sbin/nologin
games12games:/usr/games:/sbin/nologin
ftp14FTP User:/var/ftp:/sbin/nologin
nobody99Nobody:/:/sbin/nologin
systemd-network192systemd Network Management:/:/sbin/nologin
dbus81System message bus:/:/sbin/nologin
polkitd999User for polkitd:/:/sbin/nologin
postfix89:/var/spool/postfix:/sbin/nologin
sshd74Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony998:/var/lib/chrony:/sbin/nologin
tcpdump72:/:/sbin/nologin
tss59Account 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
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:/bin/bash
/bin:/sbin/nologin
2daemon:/sbin:/sbin/nologin
/var/adm:/sbin/nologin
lp:/var/spool/lpd:/sbin/nologin
0/sbin:/bin/sync
x0/sbin:/sbin/shutdown
0/sbin:/sbin/halt
12/var/spool/mail:/sbin/nologin
x0/ROOT:/sbin/nologin
2games:/usr/games:/sbin/nologin
50:FTP User:/var/ftp:/sbin/nologin
99Nobody:/:/sbin/nologin
etwork192systemd Network Management:/:/sbin/nologin
System message bus:/:/sbin/nologin
998:User for polkitd:/:/sbin/nologin
89::/var/spool/postfix:/sbin/nologin
Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
998:/var/lib/chrony:/sbin/nologin
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
root0root:/root:/bin/bash
bin1bin:/bin:/sbin/nologin
daemon2daemon:/sbin:/sbin/nologin
adm3adm:/var/adm:/sbin/nologin
lp4lp:/var/spool/lpd:/sbin/nologin
sync5sync:/sbin:/bin/sync
shutdown6shutdown:/sbin:/sbin/shutdown
halt7halt:/sbin:/sbin/halt
mail8mail:/var/spool/mail:/sbin/nologin
operator11operator:/ROOT:/sbin/nologin
games12games:/usr/games:/sbin/nologin
ftp14FTP User:/var/ftp:/sbin/nologin
nobody99Nobody:/:/sbin/nologin
systemd-network192systemd Network Management:/:/sbin/nologin
dbus81System message bus:/:/sbin/nologin
polkitd999User for polkitd:/:/sbin/nologin
postfix89:/var/spool/postfix:/sbin/nologin
sshd74Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony998:/var/lib/chrony:/sbin/nologin
tcpdump72:/:/sbin/nologin
tss59Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

[root@ecs-shell ~]# cat passwd | sort -n -t":" -k3  #查看以":"分割的,第三列从小向大排序的内容
root0root:/root:/bin/bash
bin1bin:/bin:/sbin/nologin
daemon2daemon:/sbin:/sbin/nologin
adm3adm:/var/adm:/sbin/nologin
lp4lp:/var/spool/lpd:/sbin/nologin
sync5sync:/sbin:/bin/sync
shutdown6shutdown:/sbin:/sbin/shutdown
halt7halt:/sbin:/sbin/halt
mail8mail:/var/spool/mail:/sbin/nologin
operator11operator:/ROOT:/sbin/nologin
games12games:/usr/games:/sbin/nologin
ftp14FTP User:/var/ftp:/sbin/nologin
tss59Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
tcpdump72:/:/sbin/nologin
sshd74Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus81System message bus:/:/sbin/nologin
postfix89:/var/spool/postfix:/sbin/nologin
nobody99Nobody:/:/sbin/nologin
systemd-network192systemd Network Management:/:/sbin/nologin
chrony998:/var/lib/chrony:/sbin/nologin
polkitd999User for polkitd:/:/sbin/nologin

[root@ecs-shell ~]# cat passwd | sort -nr -t":" -k3  #查看以":"分割的,第三列从大向小排序的内容
polkitd999User for polkitd:/:/sbin/nologin
chrony998:/var/lib/chrony:/sbin/nologin
systemd-network192systemd Network Management:/:/sbin/nologin
nobody99Nobody:/:/sbin/nologin
postfix89:/var/spool/postfix:/sbin/nologin
dbus81System message bus:/:/sbin/nologin
sshd74Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump72:/:/sbin/nologin
tss59Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
ftp14FTP User:/var/ftp:/sbin/nologin
games12games:/usr/games:/sbin/nologin
operator11operator:/ROOT:/sbin/nologin
mail8mail:/var/spool/mail:/sbin/nologin
halt7halt:/sbin:/sbin/halt
shutdown6shutdown:/sbin:/sbin/shutdown
sync5sync:/sbin:/bin/sync
lp4lp:/var/spool/lpd:/sbin/nologin
adm3adm:/var/adm:/sbin/nologin
daemon2daemon:/sbin:/sbin/nologin
bin1bin:/bin:/sbin/nologin
root0root:/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 1046.672339322 +0800   #修改时间
--- 2.txt       2023-12-04 2227.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 1046.672339322 +0800
+++ 2.txt       2023-12-04 2227.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::/://
:1::/://
:2::/://
:4:://://
:7::///://
:0::/://
:0::/://
:0::/://
:12::///://
:0::/ROOT://
:100:://://
:50:FTP U://://
:99/://
-:192: N M:/://
:81:S  :/://
:998:U  :/://
:89::///://
:74:P- SSH:///://
:996::///://
:72::/://
:59:A          ://://
#删除所有大写字母
[root@ecs-shell ~]#  cat passwd | tr -d "A-Z" 
root0root:/root:/bin/bash
bin1bin:/bin:/sbin/nologin
daemon2daemon:/sbin:/sbin/nologin
adm3adm:/var/adm:/sbin/nologin
lp4lp:/var/spool/lpd:/sbin/nologin
sync5sync:/sbin:/bin/sync
shutdown6shutdown:/sbin:/sbin/shutdown
halt7halt:/sbin:/sbin/halt
mail8mail:/var/spool/mail:/sbin/nologin
operator11operator:/:/sbin/nologin
games12games:/usr/games:/sbin/nologin
ftp14 ser:/var/ftp:/sbin/nologin
nobody99obody:/:/sbin/nologin
systemd-network192systemd etwork anagement:/:/sbin/nologin
dbus81ystem message bus:/:/sbin/nologin
polkitd999ser for polkitd:/:/sbin/nologin
postfix89:/var/spool/postfix:/sbin/nologin
sshd74rivilege-separated :/var/empty/sshd:/sbin/nologin
chrony998:/var/lib/chrony:/sbin/nologin
tcpdump72:/:/sbin/nologin
tss59ccount 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::/://
:::::/://
:::::/://
::::://://
:::::///://
:::/://
:::/://
:::/://
:::::///://
:::/://
::://://
:: ://://
:::::/://
-::::  :/://
::::  :/://
::::  :/://
:::::///://
::::- :///://
:::::///://
:::::/://
::::          ://://


#缩减连续重复的字符
[root@ecs-shell ~]#  tr -s "a-z" < passwd
rot0rot:/rot:/bin/bash
bin1bin:/bin:/sbin/nologin
daemon2daemon:/sbin:/sbin/nologin
adm3adm:/var/adm:/sbin/nologin
lp4lp:/var/spol/lpd:/sbin/nologin
sync5sync:/sbin:/bin/sync
shutdown6shutdown:/sbin:/sbin/shutdown
halt7halt:/sbin:/sbin/halt
mail8mail:/var/spol/mail:/sbin/nologin
operator11operator:/ROOT:/sbin/nologin
games12games:/usr/games:/sbin/nologin
ftp14FTP User:/var/ftp:/sbin/nologin
nobody99Nobody:/:/sbin/nologin
systemd-network192systemd Network Management:/:/sbin/nologin
dbus81System mesage bus:/:/sbin/nologin
polkitd999User for polkitd:/:/sbin/nologin
postfix89:/var/spol/postfix:/sbin/nologin
shd74Privilege-separated SSH:/var/empty/shd:/sbin/nologin
chrony998:/var/lib/chrony:/sbin/nologin
tcpdump72:/:/sbin/nologin
ts59Acount 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}'

链接:https://www.cnblogs.com/rallina/p/17930965.html

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 文件
    +关注

    关注

    1

    文章

    568

    浏览量

    24765
  • 工具
    +关注

    关注

    4

    文章

    312

    浏览量

    27823

原文标题:行处理工具

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    详解14种常用产品表面处理工

    设计元素的一种方法。 我们常用的产品表面处理工艺有: IMD、OMD、喷涂、 PVD、电镀、NCVM 、印刷 、镭雕、咬花、 PPVD退镀、 电泳 、 蚀刻、 喷砂 、 轧光等。 表面处理的目的是为了
    的头像 发表于 12-30 10:01 282次阅读

    ADI电源管理工具推荐

    ADI 提供了一整套电源管理工具,帮助您一次性正确设计电源解决方案。ADI 的电源管理工具支持从零件推荐到性能估算、实用的电源树设计、电路仿真和系统级优化的整个设计过程。探索这些免费且强大的工具
    的头像 发表于 12-23 09:46 303次阅读

    cmp项目管理工具的优缺点

    CMP项目管理工具,在不同的语境下有不同的含义。一种是指综合项目管理平台(Comprehensive Management Platform),它旨在整合和优化项目的各个方面,包括时间管理、资源管理
    的头像 发表于 12-17 09:42 199次阅读

    cmp与其他数据处理工具的比较

    CMP在不同的语境下有不同的含义,一种是指芯片多处理器(Chip Multiprocessors),另一种是指“比较”(compare)的缩写。 CMP与编程语言中的比较功能 CMP(比较操作
    的头像 发表于 12-17 09:30 149次阅读

    Simulink与 MATLAB 的结合使用 Simulink中的信号处理方法

    在工程和科学研究中,信号处理是一个重要的领域,涉及到信号的采集、分析、处理和生成。MATLAB 提供了丰富的信号处理工具箱,而 Simulink 提供了一个直观的图形界面,使得复杂的信号处理
    的头像 发表于 12-12 09:25 377次阅读

    镀镍处理工艺步骤 镀镍与镀铬的区别

    镀镍处理工艺步骤 镀镍是一种表面处理威廉希尔官方网站 ,用于提高金属零件的耐腐蚀性、耐磨性和装饰性。以下是镀镍的基本工艺步骤: 前处理 : 除油 :使用化学或电解除油剂去除金属表面的油脂。 除锈 :使用酸洗液去除
    的头像 发表于 12-10 14:43 477次阅读

    揭秘PCB板的八种神秘表面处理工

    印制电路板(PCB)作为电子元器件的支撑和电子元器件电路连接的提供者,在电子设备中占据重要地位。而PCB的表面处理工艺,对于保证电路板的性能、提高焊接质量以及增强电路板的耐腐蚀性都至关重要。本文将详细介绍PCB板子的八种表面处理工艺,以帮助读者更好地了解和选择适合自身需求
    的头像 发表于 11-08 13:02 839次阅读
    揭秘PCB板的八种神秘表面<b class='flag-5'>处理工</b>艺

    数字化工具在工作中的应用

    Teams和Zoom,它们促进了团队成员之间的即时沟通和协作。 文档处理工具:如Microsoft Office 365、Google Workspace和Notion,这些工具使得文档创建、编辑
    的头像 发表于 10-27 17:27 880次阅读

    哪些PCB表面处理工艺适合量产呢

    哪些PCB表面处理工艺适合量产呢
    的头像 发表于 09-30 15:52 357次阅读

    美国佐治亚理工学院一莅临达实智能调研

    近日,美国佐治亚理工学院“聚焦数据科学领域·深度探访粤港澳大湾区”学生代表团来深交流。美国佐治亚理工学院(Georgia Institute of Technology)一探访了大湾区科技企业代表达实智能。
    的头像 发表于 09-26 09:21 505次阅读

    HDI线路板盘中孔处理工

    HDI线路板的盘中孔处理工艺是为了应对电子元件集成度提高和元器件封装缩小带来的挑战。在复杂的HDI电路板设计中,由于管脚间距较小,有时需要在焊盘上打孔(即盘中孔)以便于信号和电源从下一层线路板传递
    的头像 发表于 09-25 16:52 566次阅读
    HDI线路板盘中孔<b class='flag-5'>处理工</b>艺

    PCB板的表面处理工艺及其优缺点和适用场景

    一站式PCBA智造厂家今天为大家讲讲pcb板各种表面处理工艺的适用场景有哪些?PCB板各种表面处理工艺的适用场景。PCB的表面处理工艺对于电路板的性能、可靠性和耐用性都有很大影响。 以下是一些常见
    的头像 发表于 07-04 09:38 515次阅读

    纪科技宣布推出数字实现一站式优化修复工具AmazeECO

    2024年5月16日,芯纪科技有限公司(以下简称“芯纪”)宣布推出数字实现一站式优化修复工具AmazeECO。
    的头像 发表于 05-16 14:25 458次阅读

    微软弃用WMIC,Windows管理工具的变革

    近期,微软再次出手对Windows 11内置的WMIC管理工具实施了禁止,并声明未来的Windows 11最新版(预计将于今年晚些时候推出的24H2版本)将不再支持该应用。
    的头像 发表于 01-29 10:18 1414次阅读

    开放原子校源(北理工站)成功举办,多举措赋能开源人才建设,助力开源生态繁荣发展

    更多的开源综合型人才,拓展开源贡献新领域,推动开源科研成果高效转化。 1月6日,由开放原子开源基金会主办,北京理工大学承办,深圳市腾讯计算机系统有限公司提供战略合作支持的开放原子校源(北理工站)活动在北京
    的头像 发表于 01-09 19:35 833次阅读
    开放原子校源<b class='flag-5'>行</b>(北<b class='flag-5'>理工</b>站)成功举办,多举措赋能开源人才建设,助力开源生态繁荣发展