文本處理工具
grep 對文本進行搜索
獲取我們想要的行(關鍵信息)
egrep 支持擴展正則表達式的grep
fgrep 快速搜索
不支持正則
-v 取反 找出不包含“pattern”的行
-i 忽略字符的大小寫
-n 顯示行號
-c 顯示統計到的行數,等同于wc -l
-o 僅顯示匹配到的字符串
-q 靜默輸出 只關心命令的執行結果 不關心輸出結果
-A 后幾行
-B 前幾行
-C 前后幾行 查看日志 搜索關鍵字排查錯誤的時候
-e 指定多個條件,條件是或的關系
-w 匹配整個單詞
-E
=== egrep 支持擴展的正則表達式
-F
=== fgrep 不支持正則表達式
例子如下:
grep 正則表達式
. 單個字符
[abc] a | b | c
[^abc] 除abc之外的字符
[:alnum:] 數字和字符
[:alpha:] 英文大小寫字符 a-z A-Z
[:lower:] 小寫字母
[:upper:] 大寫字母
[:space:] 專門匹配空格
* 匹配前面的字符任意次,0 到無窮
.* 任意字符出現任意次,比如說 123 456 abc
a* a字符出現任意次 aaaa aa
[[:lower:]]* 任意小寫字母出現任意次
\? 匹配前面的字符出現0次或者1次
a\? 出現0次或者1次
\+ 匹配前面的字符至少1次
a\+ a至少出現1次
\{n\} 前面的字符出現n次
[0-9]\{3\} 000-999
\{m,n\}匹配前面的字符出現m到n次,m,n是一個范圍
[0-9]\{1,3\} 0-999
\{,n\}匹配前面的字符最多出現n
[0-9]\{,3\} 最大匹配是999
\{m,\}匹配前的字符至少出現m次
[0-9]\{3,\} 000 無窮
位置錨定 用來定位字符出現的位置
^ 錨定行首
$ 錨定行尾
^$ 匹配空行的
^[[:space:]] 行首是空白的字符
^[[:space:]]*$ 也是 空行
^a 以a開頭的行
b$ 以b結束的行
^a.*b$ 以a開頭 中間任意字符 以b結尾的行
^a.*[[:space:]]\{3\}.*b$ a開頭跟任意字符,中間出現三次空格再跟任意字符
以b結尾的行
^# 以#開頭的行
cat /etc/profile | grep -v “^#” | grep -v “^$”
cat /etc/httpd/conf/httpd.conf |
grep -v “^#” | grep -v “^$”
\b \b 匹配詞首和詞尾
\<
\> 匹配詞首和詞尾
\broot\b
\<root\>
vim編輯器
三種模式 打開之后默認是一般模式 | 命令模式
插入模式 | 編輯模式
末行模式 | 擴展模式(extend )| 命令行模式
一般模式 i 編輯模式
i I a A o O 用的比較多的是 i o O
編輯模式 esc 一般模式
一般模式 : 末行模式
: ? / 其中: / 用的比較多的
末行模式 q 結束
:q 退出
:q! 強制退出,不保存修改的內容
:wq 保存退出
:x 保存退出
一般模式下 ZZ ZQ
上下左右鍵移動
10 –>
10 <–
10 向下
10 向上
w 單詞間跳轉
10w 向下跳10個單詞
H 頁首
M 頁中間
L 頁底
行首行尾
^ 跳至行首 非空白字符
$ 跳至行尾
0 跳到行首
G 最后一行
gg 第一行 1G
句子之間移動 (上 )下
段落之間移動 {上 } 向下移動
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
字符的刪除
x 刪除字符
10x 刪除10個字符
替換模式
r 替換當前字符
R 進入替換模式,替換完之后按esc鍵退出
dd 刪除光標所在當前行
10dd 刪除10行
刪除半行
d$ 刪除光標處到行尾
d^ d0刪除光標處到行首
dw de 刪除一個單詞
x 多按幾次
d1G刪除光標到第一行的數據
dG 刪除光標到最后一行的數據
二者結合可以刪除整個文件里面的內容
刪除文件全部內容 先跳到最后一行 G
然后執行d1G
復制粘貼
yy —> p
y$ 復制光標處到行尾的
y0 y^ 復制光標到行首的 注意空白字符和非空白字符的區別
ye yw 復制單個字符
粘貼
p 粘貼到當前行的下一行
P 粘貼到當前行的上面一行
c 相當于執行了x然后再執行i 進入編輯操作
c$ 刪除光標處到行尾的內容 然后進入編輯模式
c^ c0 刪除光標處到行首的內容,刪完進入編輯模式
cb ce cw 刪除一個單詞之后進入編輯模式
cc 刪除一行之后直接進入編輯模式
文件查找和壓縮
find:根據我們指定的內容或者條件在系統上進行實時查找
最新 最快 最精確
使用場景 我想查找某個文件名叫 server.xml 在/apps/data/目錄下
我想查找某個目錄下文件大小超過10G的日志
find .
-name “baoding.log”
-print
查找路徑 查找條件 找到之后執行的動作
find . -name “baoding.log” 默認動作 標準輸出,輸出到當前屏幕上
查找條件
-name 可以使用通配符 比如 * ? [] [^]
find . -name “????.log”
-iname 文件名稱忽略大小寫
find
. -iname “baoding.log”
-inum n 根據inode來查找 (基本不用)
find . -inum 1179826
-samefile name 查找相同inode號的文件,其實等于查找硬鏈接(基本不用)
-links n 根據鏈接數
find . -links 2
-regex 使用正則表達式的方法匹配文件名
find /etc/ -regex “.*\.sh$”
根據屬主和屬組來查找
-user
-group -uid -gid
-nouser 查找沒有屬主的文件或者目錄
-nogroup 查找沒有屬組的文件或者目錄
測試方法:新建一個ash用戶,然后把一個文件的屬主和屬組改成ash
然后再刪除ash用戶
根據文件類型:
-type f 普通文件
d 目錄
l 鏈接文件
s 套接字文件
b 塊設備
c 字符設備
p 管道
根據文件大小來查找
-size + 大于多少的文件
k M G
-size – 小于多少的文件
k M G
-size 等于多少的文件
k M G
根據時間來查找
-mtime +7 7天以前的 從第8天開始
-mtime 7 當前時間往前推第7天
-mtime -7 當前時間往前推第7天以內
——10–9–8 7——5—3–2—1
mtime +7 | mtime 7|
mtime -7 |
以分鐘為單位 -amin -cmin(少用)
-mmin +7 -7 7
根據權限來查找(基本不用的)
-perm 755 精確匹配有755權限的文件
-perm -222 必須包含全部的222權限才可以
-perm +222(CentOS 6)
/222(CentOS 7)
只要有一個比如說屬主 屬組或者其他人有一個擁有寫權限即可
幾種壓縮工具的用法
compress
compress file 會生產file.Z壓縮文件,同時會刪除源文件
compree -c file > file.Z 將壓縮結果輸出到標準屏幕上,可以一個(壓縮)文件,從而達到生產壓縮文件
同時保留源文件
compress -d
解壓縮 .Z格式結尾的壓縮文件
=== uncompress
zcat file.Z 直接查看壓縮文件的內容不用先解壓縮
gzip 壓縮比1–9 默認是6 壓縮比越高 耗費CPU資源也多
文件比較小的話,使用gzip越壓縮越大
nginx gzip on
gzip_min_length 1k; 超過多大的文件(1K)才會壓縮
-d 解壓縮 == gunzip
-c 將壓縮或者解壓縮結果輸出到屏幕
bzip2
-k 保留源文件
-d 解壓縮 == bunzip2
-# 指定壓縮比
bzcat file
xz 要取代gzip
bzip2的命令 壓縮的更徹底
-k 保留源文件
-d 執行解壓縮
-# 指定壓縮比
xzcat 直接查看壓縮文件內容
zip 打包壓縮(可以壓縮目錄)
-r 遞歸壓縮
unzip 解壓縮
-p 將壓縮結果輸出屏幕上
tar 打包工具,將多個目錄打包成一個文件
-c 打包 創建打包文件(歸檔)
-f 指定打包的文件名
-f filename 必須放在一起
-r 將文件追加至歸檔文件中
-t 不解壓的情況下直接查看歸檔文件里面的內容
常用選項:-cf -rf -tf
-x 執行解壓縮
通常和-v(顯示解壓縮過程) -f結合使用
-C 解壓到指定目錄
shell腳本的編程
Shell腳本
過程式 解釋語言
組成:
變量
命令
控制語句(if,for,while)
首行的固定寫法:
#!/bin/bash
#!/bin/sh
告訴系統執行的時候要調用什么解釋器。
如果首行不寫,執行的時候需要使用命令bash
shell腳本的寫法:
注釋說明:
#!/bin/bash
#
#Filename:BeiFen.sh
#Description:Test
#Author:Li Nan
#Email:xxx@126.com
#Revision:3.1
#Date:20170407
#Note:Test
每一行之前最好有一個注釋
腳本名稱使用.sh結尾的
盡量避免使用中文
# 表示注釋 此行不執行
腳本的執行:
1 bash
2 sh
3 加執行權限
1)相對路徑
2)絕對路徑
3)放到$PATH變量指定的目錄里面,直接執行(tab)
腳本調試執行:
bash -n 檢查語法錯誤,不檢查拼寫錯誤
bash -x 顯示腳本執行的時候每一個命令具體的執行結果
bash變量的種類
本地變量(全局變量) 僅僅對當前shell生效
環境變量 對當前shell以及其他shell都生效 export
局部變量(私有變量) 通常用在函數里面,使用local
例子如下:
原創文章,作者:yaobinbin,如若轉載,請注明出處:http://www.www58058.com/73027
主要介紹了vim、 find命令、grep命令的用法及正則表達式方面的內容,內容總結的很詳細,要稍微注意一下排版,繼續努力!