行處理工具
grep:用于查找文件里符合條件的字符串或正則表達(dá)式。
grep 指令用于查找內(nèi)容包含指定的范本樣式的文件,如果發(fā)現(xiàn)某文件的內(nèi)容符合所指定的范本樣式,預(yù)設(shè) grep 指令會(huì)把含有范本樣式的那一列顯示出來(lái)。若不指定任何文件名稱,或是所給予的文件名為-,則 grep 指令會(huì)從標(biāo)準(zhǔn)輸入設(shè)備讀取數(shù)據(jù)。
-i:忽略大小寫進(jìn)行匹配。
-v:反向查找,只打印不匹配的行。
-n:顯示匹配行的行號(hào)。
-r:遞歸查找子目錄中的文件。
-l:只打印匹配的文件名。
-c:只打印匹配的行數(shù)。
-A : 打印搜索結(jié)果后幾行的數(shù)據(jù)
-B : 打印搜索結(jié)果前幾行的數(shù)據(jù)
-C : 打印搜索結(jié)果前后幾行的數(shù)據(jù)
grep --color=auto passwd #高亮顯示過(guò)濾內(nèi)容 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結(jié)尾的行 cat passwd | grep -ni 'bash$' #尋找不區(qū)分大小寫以bash結(jié)尾的行,同時(shí)打印行號(hào) cat passwd | grep -niv 'bash$' #反選不區(qū)分大小寫以bash結(jié)尾的行,同時(shí)打印行號(hào) grep -nB 2 'ftp' passwd #打印以ftp過(guò)濾的行及其前兩行,同時(shí)打印行號(hào) grep -nB 2 '^ftp' passwd #打印以ftp開頭過(guò)濾的行及其前兩行,同時(shí)打印行號(hào) grep -nA 2 '^ftp' passwd #打印以ftp過(guò)濾的行及其前兩行,同時(shí)打印行號(hào) grep -nB5 2 '^ftp' passwd #打印以ftp過(guò)濾的行及其前兩行,同時(shí)打印行號(hào) grep -A 2 '^ftp' passwd #打印以ftp過(guò)濾的行及其后兩行 grep -C 2 '^ftp' passwd ##打印以ftp過(guò)濾的行及其前后兩行 grep -o '^ftp' passwd #只打印ftp關(guān)鍵字
cut:類似于awk,可以獲取某列的數(shù)值,或可以獲取每行從某個(gè)字符到某個(gè)字符的全部字符。
-c :以字符為單位進(jìn)行分割。
-d :自定義分隔符,默認(rèn)為制表符。
-f :與-d一起使用,指定顯示哪個(gè)區(qū)域。
[root@ecs-shell ~]# cat passwd #源文件內(nèi)容 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個(gè)字符 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個(gè)字符到每行結(jié)束 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 #相關(guān)命令: 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 命令用于將文本文件內(nèi)容加以排序。
-b 忽略每行前面開始出的空格字符。
-n 依照數(shù)值的大小排序。
-u 意味著是唯一的(unique),輸出的結(jié)果是去完重了的。
-o<輸出文件> 將排序后的結(jié)果存入指定的文件。
-r 以相反的順序來(lái)排序。
[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 #查看以":"分割的,第三列從小向大排序的內(nèi)容 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 #查看以":"分割的,第三列從大向小排序的內(nèi)容 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 #去掉重復(fù)出現(xiàn)的行 111 222 aaa dsdsa sda vvv #相關(guān)命令 cat passwd cat passwd | sort -n -t":" -k3 cat passwd | sort -nr -t":" -k3
uniq:uniq 命令用于檢查及刪除文本文件中重復(fù)出現(xiàn)的行列,一般與 sort 命令結(jié)合使用。
-c或--count 在每列旁邊顯示該行重復(fù)出現(xiàn)的次數(shù)。
-d或--repeated 僅顯示重復(fù)出現(xiàn)的行列。
-u或--unique 僅顯示出一次的行列。
[輸入文件] 指定已排序好的文本文件。如果不指定此項(xiàng),則從標(biāo)準(zhǔn)讀取數(shù)據(jù);
[輸出文件] 指定輸出的文件。如果不指定此選項(xiàng),則將內(nèi)容顯示到標(biāo)準(zhǔn)輸出設(shè)備(顯示終端)。
[root@ecs-shell ~]# cat 3.txt #查看源文件
aaa
111
222
111
222
222
sda
dsdsa
vvv
[root@ecs-shell ~]# cat 3.txt | uniq #對(duì)源文件中連續(xù)重復(fù)的行去重
aaa
111
222
111
222
sda
dsdsa
vvv
[root@ecs-shell ~]# cat 3.txt | uniq -c #對(duì)重復(fù)的行計(jì)數(shù)
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 #打印出其中連續(xù)重復(fù)的行
222
#相關(guān)命令
cat 3.txt | uniq
cat 3.txt | uniq -c
cat 3.txt | uniq -d
tee: tee命令用于讀取標(biāo)準(zhǔn)輸入的數(shù)據(jù),并將其內(nèi)容輸出成文件。
tee指令會(huì)從標(biāo)準(zhǔn)輸入設(shè)備讀取數(shù)據(jù),將其內(nèi)容輸出到標(biāo)準(zhǔn)輸出設(shè)備,同時(shí)保存成文件。
-a或--append 附加到既有文件的后面,而非覆蓋它.
[root@ecs-shell ~]# echo "helloworld" | tee abc.txt #標(biāo)準(zhǔn)覆蓋輸?shù)轿覀兊奈募推聊簧?helloworld [root@ecs-shell ~]# echo "helloworld" | tee -a abc.txt #標(biāo)準(zhǔn)追加輸出到我們的文件和屏幕上 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 會(huì)比較目錄中相同文件名的文件,但不會(huì)比較其中子目錄。
-c 上下文模式
-u 合并模式
[root@ecs-shell ~]# diff 1.txt 2.txt #拿到的是一個(gè)操作信息,可以使第一個(gè)文件變?yōu)榈诙€(gè)文件。 3c3 #3c3是指第一個(gè)文件第三行通過(guò)改變可以變成第二個(gè)文件第三行 < write_enable=YES #第一個(gè)文件第三行 --- > write_enable=NO #第二個(gè)文件第三行 8,9c8 #8,9c8是指第一個(gè)文件通過(guò)改變第八,九行可以變成第八行 < ooooooo < xferlog_std_format=YES --- > xferlog_std_format=NO 10a10 #10a10指第十行增加第二個(gè)文件第十行的內(nèi)容 > aaa #第二個(gè)文件第十行內(nèi)容 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 #對(duì)兩個(gè)文件進(jìn)行一定修改后,使用-c模式來(lái)比較 [root@ecs-shell ~]# diff -c 1.txt 2.txt *** 1.txt 2023-12-06 1046.672339322 +0800 #修改時(shí)間 --- 2.txt 2023-12-04 2227.956996693 +0800 #修改時(shí)間 *************** *** 1,13 **** #第一個(gè)文件的行數(shù) anonymous_enable=YES local_enable=YES local_umask=022 - cccca #第一個(gè)文件刪除此行 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 ---- #第二個(gè)文件的行數(shù) anonymous_enable=YES local_enable=YES + write_enable=NO #第一個(gè)文件加上此行 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 #第一個(gè)文件加上此行 ccpam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES #使用-u來(lái)比較 [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對(duì)兩個(gè)文件夾進(jìn)行比較: [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補(bǔ)丁工具使用:可以直接使文件1變?yōu)槲募?[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 指令會(huì)把每個(gè)文件以列對(duì)列的方式,一列列地加以合并。
-d<間隔字符>或--delimiters=<間隔字符> 用指定的間隔字符取代跳格字符。
-s或--serial 串列進(jìn)行而非平行處理。
--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選項(xiàng) 把每個(gè)文件當(dāng)一行輸出
[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選項(xiàng)可以定義之間的分隔符
#定義|為分隔符
[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 命令用于轉(zhuǎn)換或刪除文件中的字符。
tr 指令從標(biāo)準(zhǔn)輸入設(shè)備讀取數(shù)據(jù),經(jīng)過(guò)字符串轉(zhuǎn)譯后,將結(jié)果輸出到標(biāo)準(zhǔn)輸出設(shè)備。
-c, --complement:反選設(shè)定字符。也就是符合 SET1 的部份不做處理,不符合的剩余部份才進(jìn)行轉(zhuǎn)換
-d, --delete:刪除指令字符
-s, --squeeze-repeats:縮減連續(xù)重復(fù)的字符成指定的單個(gè)字符
-t, --truncate-set1:削減 SET1 指定范圍,使之與 SET2 設(shè)定長(zhǎng)度相等
--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
#要實(shí)現(xiàn)如上的效果,也可以這樣寫
[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
#將數(shù)字換為“@”
[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
#刪除所有字母和數(shù)字
[root@ecs-shell ~]# cat passwd | tr -d "A-Za-z1-9"
:0::/://
:::::/://
:::::/://
::::://://
:::::///://
:::/://
:::/://
:::/://
:::::///://
:::/://
::://://
:: ://://
:::::/://
-:::: :/://
:::: :/://
:::: :/://
:::::///://
::::- :///://
:::::///://
:::::/://
:::: ://://
#縮減連續(xù)重復(fù)的字符
[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
-
文件
+關(guān)注
關(guān)注
1文章
594瀏覽量
26060 -
工具
+關(guān)注
關(guān)注
4文章
317瀏覽量
28870
原文標(biāo)題:行處理工具
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Ansible與SaltStack配置管理工具的對(duì)比
Linux Shell文本處理神器合集:15個(gè)工具+實(shí)戰(zhàn)例子,效率直接翻倍
長(zhǎng)春理工大學(xué)領(lǐng)導(dǎo)一行蒞臨聯(lián)合光電參觀交流
行芯科技GloryEX入選國(guó)產(chǎn)EDA工具口碑榜
中汽中心赴武漢理工大學(xué)走訪交流
上海理工大學(xué)師生一行走進(jìn)簡(jiǎn)儀科技總部
理工雷科亮相第22屆信號(hào)處理學(xué)術(shù)年會(huì)
江蘇拓能半導(dǎo)體科技有限公司發(fā)布高速半導(dǎo)體信號(hào)處理工具平臺(tái),驅(qū)動(dòng)芯片設(shè)計(jì)效率革命
技術(shù)培訓(xùn) | 南理工專場(chǎng):同星汽車電子基礎(chǔ)工具鏈暨TSMaster軟件應(yīng)用培訓(xùn)圓滿落幕
鋰電池制造 | 電芯預(yù)處理工藝的步驟詳解
上海理工大學(xué)一行蒞臨簡(jiǎn)儀科技參觀交流
PCB表面處理工藝詳解
Splashtop 入選 Gartner 端點(diǎn)管理工具市場(chǎng)指南代表供應(yīng)商
行處理工具
評(píng)論