四劍客

Sed案例總結:php

1.取出some.jpg的權限:node

# stat   some.jpg|sed -n 's#^.*(0\([0-7].*\)/-r.*$#\1#gp'mysql

777nginx

# stat   process.py |sed -rn 's#^.*0([0-7]{3}).*$#\1#pg'sql

644shell

2.config_ip.sh的第一行前加上#!/bin/bashcentos

sed   '1i\#!/bin/bash' config_ip.sh數組

3.config_ip.sh的第一行前加上空行bash

sed  -i '1i\  ' config_ip.shdom

4.hosts文件中加兩個域名解析

sed   '2a\192.168.1.20 jinfen\n192.168.1.21 xiaoming' /etc/hosts

127.0.0.1  localhost    localhost.localdomain    VM_137_230_centos www-jfedu-net

::1         localhost localhost.localdomain   localhost6 localhost6.localdomain6

192.168.1.20   jinfen

192.168.1.21   xiaoming

 

5.取出config_ip.sh的第二行和第六行的內容

sed -n '2p;6p'   config_ip.sh

#!/bin/bash

while true

sed -n  -e '2p' -e '6p' config_ip.sh

#!/bin/bash

while true

6..取出config_ip.sh的第二行到第六行的內容

sed -n '2,6p'   config_ip.sh

7.優化ssh配置文件(優化的參數見下):

1.  Port 52113

2.  PermitRootLogin   no

3.  PermitEmptyPasswords   no

4.  UseDNS no

5.  GSSAPIAuthentication   no

sed -n   's/#Port.*$/Port 52113/pg' /etc/ssh/sshd_config

Port 52113

sed -n 's/#PermitRootLogin.*$/PermitRootLogin   no/gp' /etc/ssh/sshd_config

PermitRootLogin   no

8.提取出某一個字符:

echo I am to   like you|sed 's#^.*o \([a-z].*\) y.*$#\1#g'

like

echo I am to   like you|sed -r 's#^.*o ([a-z]+) y.*$#\1#g'

like         //-r 擴展正則

9.系統開機啓動項優化:

chkconfig   --list|grep '3:on'|grep -vE 'sshd|crond|network|reysstat|sysstat'|awk '{print   $1}'|sed -r 's#^(.*)#chkconfig \1 off#g'|bash

10.特殊符號&表明被替換的內容:
echo -e   "hello\nword"|sed 's#hello#-----&------#g'
-----hello------
word
11.取出含有root的行:
sed -n   '/root/p' /etc/passwd
grep   'root' /etc/passwd
12.取出含有第20行到含有mysql的行
sed -n   '20,/mysql/p'  /etc/passwd
13.將17/Apr/2015:09:29:24 +0800改成2015-04-17 09:29:24+0800的格式.
echo   "17/Apr/2015:09:29:24 +0800"|sed -nr "s#(..)/(...)/(....):(.*)   (.*)#\3-\2-\1 \4\5#;s#Apr#04#p"
2015-04-17   09:29:24+0800
14.一鍵完成ssh的參數配置:
sed -i '13   iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS   no\nGSSAPIAuthentication no'    sshd_config
15.取出IP地址:
ifconfig   eth0|sed -nr 's#.*addr:(.*) Bca.*$#\1#p'
10.104.137.230
ifconfig   eth0|sed -n 's#.*ddr:##;s# Bca.*##p'
10.104.137.230
16.替換命令的使用:將第一行換成this is root
#   sed '1c\this is root' /etc/passwd
this is   root
17.刪除命令的使用:刪除以xiaodong開頭的行
sed '/^xiaodong.*$/d'   /etc/passwd
sed '4,$d'   /etc/passwd
18.打印出奇數行:
seq 10|sed   'n;d'
19.打印出偶數行:
seq 10|sed   -n 'n;p'
20.在每一行後追加一個空行
# seq   10|sed  'G'
21.添加行前編號:
sed =   /etc/fstab |sed 'N;s/\n/\./'
1./dev/vda1     /         ext3       noatime,acl,user_xattr 1
22.在song前加一個行前編號
sed -e   '/song/s/^/&1./g' passwd
1.song1:x:20533:20533::/home/song1:/bin/bash
23.使用變量:一對單引號包着一對雙引號
name=jiajie
sed   -n  '/'"$name"'/p' 1.ah     
 
Grep案例總結
1.打印出出現root的行;
grep   'root' /etc/passwd
2.打印出出現root的行並加上行號
grep -n   'root' /etc/passwd
3.打印出空行和以#開頭的行的以外的部分
egrep -v   '^$|^#' /usr/local/zabbix/etc/zabbix_server.conf
Centos7.不支持egrep
grep -E -v   '^#|^ *#|^$' conf/nginx.conf
4.打印出出現jfedu1和jfedu2的行。[12]表明配置裏面的任一個字節。
grep   -n 'jfedu[12]' /etc/passwd
32:jfedu1:x:510:510::/home/jfedu1:/bin/bash
33:jfedu2:x:511:511::/home/jfedu2:/bin/bash
5.反向選擇。 [^1]表明匹配除了jfedu1之外的含有jfedu的內容
grep   -n 'jfedu[^1]' /etc/passwd
31:jfedu:x:509:509::/home/jfedu:/bin/bash
33:jfedu2:x:511:511::/home/jfedu2:/bin/bash
34:jfedu999:x:512:512::/tmp//jfedu999:/bin/bash
35:jfedu666:x:513:513::/home/jfedu666:/bin/bash
49:jfedu001:x:20532:20532::/home/jfedu001:/bin/bash
6.匹配出含有數字的行。
grep   '[0-9]' which.sh
7.匹配出以#號開頭的行
grep '^#'   which.sh
8.找出非空白的行
grep -v   '^$' which.sh
9.找出含有j…u的行。. 號表示一個字節
grep   'j...u' /etc/passwd
10.匹配出IP地址。[0-9]{1,3}表明匹配前面的數字1~3次
ifconfig   eth0|egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
+ 表明匹配前面出現的字符一次或者屢次。-o 只打印匹配的字符
ifconfig   eth0|egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'
11.輸出含有root的行數
grep   -c 'root' /etc/passwd
12.取出訪問頻率最高的前10個IP地址
egrep   -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'  access_log|sort|uniq -c|sort -nr|head -10
13.查看mysql進程
ps   -ef|grep mysql|grep -v grep
14.查看mysql端口是否起來
ss -tnl|grep 3306
LISTEN     0        50                          *:3306                     *:*    
15.使用 –l 參數,列出包含root參數的文件名(查詢多個文件時)
grep -l root /etc/passwd /etc/shadow /etc/fstab /etc/issue
/etc/passwd
/etc/shadow
16.輸出匹配行的前四行,後四行,先後四行
grep   -B 4 xiaoming /etc/passwd   //前四行 before
grep   -A 4 xiaoming /etc/passwd   //後四行 after
grep   -C 4 xiaoming /etc/passwd  //先後四行
17.將搜索的關鍵字標紅
grep   --color=auto 'root' /etc/passwd
18.查找當前目錄下以.txt結尾的文件。
ll |grep '.txt'
-rw-r--r-- 1 root root          0 Aug 24 11:29 1.txt
-rw-r--r-- 1 root root     139018 Aug 23 16:29 all_php.txt
-rw-r--r--   1 root root       97 Aug 23 14:58   jfedu.txt
19.匹配含有空行的
grep   '[[:space:]]' jfedu.txt
20.匹配單行含有標點符號的內容
grep   '[[:punct:]]' jfedu.txt
Awk案例總結:
1.取出IP地址:
ifconfig   eth0 |awk -F '[ :]+' 'NR==2 {print $4}'
2.顯示最近登陸的5個用戶:
last   -n 5|awk '{print $1}'
3.顯示/etc/passwd的帳號名
awk   -F: '{print $1}' /etc/passwd
4.在第一行添加name,shell,並在最後一行添加ending,/bin/bash
cat   /etc/passwd|awk -F: 'BEGIN{print "name,shell"}{print $1","$7}END{print   "ending,/bin/bash"}'
5.搜索關鍵字所在的行。(由此能夠看出在必定條件下三劍客之間的功能是同樣的)
awk  '/root/' /etc/passwd
grep   root /etc/passwd
sed   -n '/root/p' /etc/passwd
6.搜索root所在的行,並顯示對應的shell
awk   -F: '/root/{print $1"-"$7}' /etc/passwd
7.定製/etc/passwd顯示的內容
awk   -F: '{print   "filename:"FILENAME",linenumber:"NR",column:"NF",linecontent:"$0}'   /etc/passwd
awk   -F:   '{printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}'   /etc/passwd
8.查看用戶的總數。
awk   'BEGIN{count=0}{count++;print $0;}END{print "user count is",count}'   /etc/passwd
9.統計某個文件夾下的文件佔用的字節數
ls   -l|awk 'BEGIN{size=0}{size=size+$5}END{print "size is "   size/1024/1024,"M"}'
size   is 44.5918 M
10. 統計某個文件夾下的文件佔用的字節數過濾出4096大小的文件(通常是文件夾)
ls -l|awk 'BEGIN{size=0;print "[START]size   is",size}{if($5!=4096){size=size+$5;}}END{print"[END]size   is",size/1024/1024,"M"}'
[START]size is 0
[END]size   is 44.5606 M
11.使用for循環遍歷數組
awk   -F: 'BEGIN{count=0;}{name[count]=$1;count++;}END{for(i=0;i<NR;i++)print   i,name[i]}' /etc/passwd
12.精確匹配出root用戶的行
awk -F: '$1=="root"' /etc/passwd
root:x:0:0:root:/root:/bin/bash
13.列出有多少列
echo "I am a bird"|awk '{print NF}'
4
14.輸出最後一個字段的內容
echo   "I am a bird"|awk '{print $NF}'
bird
15.指定輸出分隔符
echo "I am a bird"|awk   'BEGIN{OFS="#"}{print $1,$2,$3,$4}'
I#am#a#bird
16.打印出含有tcp 的行
awk   '/tcp/{print $0}' test.txt
17.邏輯||
awk   '/blp5/||/3gpp/{print $0}' test.txt
18.邏輯&&
awk   '/blp5/&&/tcp/{print $0}' test.txt
19.打印出3gpp到blp5的行
awk   '/3gpp/,/blp5/{print $0}' test.txt
20.統計出空白行的總個數
awk '/^$/{x+=1}END{print x}' /etc/ssh/ssh_config
4
21.判斷boot分區可用容量小於20M時報警,不然就顯示OK
df|grep   'boot'|awk '{if($4<20000)print"alart";else print   "ok"}'
22.判斷
seq   5|awk '{if($0==3)print $0;else print "no"}'
23.顯示IP
ifconfig   eth0|awk '/Bcast/'|awk -F'[ :]+' '{print $4}'
23.統計訪問IP
awk '/2017:16:52/,/2017:15:21/'   access_log|awk '{print $1}'|sort|uniq -c|sort -nr|head -10

awk -F"=" '{print "rpm -e --nodeps "$2}' test.txt 

Find命令總結:

語法格式:

find   path   -option     [   -print ]   [ -exec     -ok   command ]   { }    \;

1.列出當前目錄及其子目錄下的全部文件及其文件夾:

find  .  [-print]

2.根據文件名來查找:

# find . -name "*.txt"

./jfedu.txt

./.jenkins/userContent/readme.txt

./.jenkins/jobs/www.jfedu.net/svnexternals.txt

3.忽略大小寫:

# find . -iname "*.txt"

./jfedu.txt

./.jenkins/userContent/readme.txt

./.jenkins/jobs/www.jfedu.net/svnexternals.txt

./index.TXT

4.匹配多個條件中的 -oor   -a(and)

# find . -name   "*.txt" -o -name "*.pdf"

./n.txt

./new.txt

./text.pdf

# find . -name   "*.txt" -a -name "n.*"

./n.txt

5.指定最大深度查找目錄  -mindepth 遍歷最小深度

# find . -maxdepth 2 -type   d

.

./.jenkins

./.jenkins/userContent

./.jenkins/fingerprints

./.jenkins/plugins

./.jenkins/cache

./.jenkins/updates

6.根據文件類型搜索:

# find . -type f

./n.txt

./which.sh

f:普通文件  d:目錄 c:塊設備 l:符號連接  b:套接字

7.根據文件時間進行搜索:

# find . -type f -atime -7    打印7天內被訪問過的文件

./n.txt

./which.sh

./echo_hello.sh

./new.txt

-atime 訪問時間  

-mtime 文件的最後一次修改時間

-ctime 文件的變化時間(如:權限)

如下是基於分鐘的:

-amin 訪問時間  -mmin    修改時間  -ctime 變化時間

+ 大於小於

8.指定比較的時間戳的參考文件,而後找出比參考問間新的文件:

# find . -type f -newer   which.sh

./n.txt

./new.txt

./text.pdf

./some.jpg

9.基於文件的大小進行文件搜索:

# find . -type f -size +1M  //大於1M的文件

./.jenkins/plugins/maven-plugin.jpi

./.jenkins/plugins/subversion.jpi

./.jenkins/plugins/subversion/WEB-INF/lib/svnkit-1.7.10-jenkins-1.jar

b 塊設備   c 字節   w    k 千字節 M兆字節   G 吉字節

10.刪除匹配的文件:-delete

# find . -type f -name   "*.swp" -delete

11.匹配文件權限:-perm

# find . -type f -perm 644

12.根據文件的全部權進行搜索:-user

# find / etc -type f -user   mysql

13.結合find執行命令或者動做:

找到/tmp目錄下全部權不是root的文件,並修改爲root權限

# find /tmp/ -type f  ! -user root -exec chown root {} \;

找到全部php文件,讀取放到all_php.txt文件中

# find . -type f -name   "*.php" -exec cat {} \;>all_php.txt

10天前的文件複製到old

# find . -type f -mtime   +10 -name "*.txt" -exec cp {} OLD \;

相關文章
相關標籤/搜索