? ? ? ? 本文記錄些平常在課上做的筆記,有些不容易理解的地方加入了個人的一些理解,希望可以幫到同樣陷入迷茫的你們。
grep:文本過濾 工具 ? 用于取出文本中的行
例如grep? root? /etc/passwd? 搜索文件中包含root的行,打印出整行。
grep? “$user”? /etc/passwd ? ?雙引號可以識別其中變量
grep? ‘$user’? /etc/passwd ? ?單引號不能識別變量
grep? `whoami`? /etc/passwd? 在文件中尋找執行過whoani命令后的字段,打印出來
centos6 需要自己定義別名–color=auto
-v: 顯示不被pattern匹配到的行? 取反
-i: 忽略字符大小寫
-n:顯示匹配的行號
-c: 統計匹配的行數 ?只顯示行數,不打印行
-o: 僅顯示匹配到的字符串? 例如搜索root? 就只顯示root
-q: 靜默模式,不輸出任何信息
-A #: after, 后#行? 包含root的后幾行也打印出來? 結果保存在echo? $?? 0為找到
-B #: before, 前#行
-C #:context, 前后各#行
-e:實現多個選項間的邏輯or關系
grep ?–e ‘cat ’ -e ‘dog’ file? 表示cat或dog
-w:匹配整個單詞
-f :后面跟一個文件,文件必須為搜索條件
-E:使用ERE·
-F:相當于fgrep,不支持正則表達式
REGEXP正則表達式
由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符)不表示字符字面意義,而表示控制或通配的功能
基本正則表達式 : BRE
擴展正則表達式:ERE
grep -E, egrep?? 表示使用擴展正則表達式
PCRE
元字符分類:字符匹配、匹配次數、位置錨定、分組
匹配字符:
. 匹配任意單個字符
[] 匹配指定范圍內的任意單個字符
[^] 匹配指定范圍外的任意單個字符
[:alnum:] 字母和數字
[:alpha:] 代表任何英文大小寫字符,亦即 A-Z, a-z
[:lower:] 小寫字母 [:upper:] 大寫字母
[:blank:] 空白字符(空格和制表符)
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范圍廣)
[:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…)
[:digit:] 十進制數字 [:xdigit:]十六進制數字
[:graph:] 可打印的非空白字符
[:print:] 可打印字符
[:punct:] 標點符號
匹配次數:用在要指定次數的字符后面,用于指定前面的字符要出現的次數
* 匹配前面的字符任意次,包括0次
貪婪模式:盡可能長的匹配? 默認
.* 任意長度的任意字符
. 任意單一字符
[ ] [ ]內任意單一字符
[^] 除[ ]內任意單一字符
*前面字符重復不確定次數
\+ ?\+前面字符重復一次以上不確定次數
\? 轉義符
\? 匹配其前面的字符0或1次?? \有沒有都行
\+ 匹配其前面的字符至少1次
\{n\} 匹配前面的字符n次?? 精確字數
\{m,n\} 匹配前面的字符至少m次,至多n次
\{,n\} 匹配前面的字符至多n次
\{n,\} 匹配前面的字符至少n次
位置錨定:定位出現的位置
^ 行首錨定,用于模式的最左側? grep “^bash” /etc/passwd?? 表示行首
$ 行尾錨定,用于模式的最右側? grep “bash$” /etc/passwd?? 表示行尾
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 詞首錨定,用于單詞模式的左側
\> 或 \b 詞尾錨定;用于單詞模式的右側
\b????? 單詞邊界表示詞首詞尾都行
\<PATTERN\> 匹配整個單詞
分組:
\(wang\) 將一個或多個字符捆綁在一起,表示整體的wang作一個整體進行處理,如:\(root\)\+
分組括號中的模式匹配到的內容會被正則表達式引擎記錄于內部的變量中,這些變量的命名方式為: \1, \2, \3, …
\1 表示從左側起第一個左括號以及與之匹配右括號之間的模式所匹配到的字符
示例: \(string1\+\(string2\)*\)
\1 :string1\+\(string2\)*
\2 :string2
后向引用:引用前面的分組括號中的模式所匹配字符,而非模式本身
或者:\1
示例:a\|b: a或b C\|cat: C或cat \(C\|c\)at:Cat或cat? 好好理解
\ .?? 表示點本身? 轉義
*? 表示前面字符出現任意次數,一般要加雙引號
.*? 表示任意長度任意字符串
[.]? 表示點本身
\1 表示模式結果而不是模式本身
^\(a\|b\)?? 分組a或b
\+表示加的意思
vim 文本編輯器
vim [OPTION]… FILE…
+#: 打開文件后,讓光標處于第#行的行首,+默認行尾
+/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首
ex file 或 vim –e 直接進入ex模式
如果該文件存在,文件被打開并顯示內容
如果該文件不存在,當編輯后第一次存盤時創建它
三種主要模式
命令(normal)模式:默認 可以剪切粘貼文本
插入(insert)或編輯模式:可以修改文本
擴展命令模式(extended command)模式:保存修改或退出
可視化編輯模式visual :
Esc鍵: 退出當前模式,總是回到命令模式
命令模式 –> 插入模式 都可切換模式
i: ?insert, 在光標所在處輸入
I: 在當前光標所在行的行首輸入
a: ?append, 在光標所在處后面輸入
A: 在當前光標所在行的行尾輸入
o: ?在當前光標所在行的下方打開一個新行
O: 在當前光標所在行的上方打開一個新行
:q 退出擴展命令模式: ?按:進入
:q! 強制退出,丟棄做出的修改
:wq 保存退出
:w 寫(存)磁盤文件
:x 保存退出
:r 文件夾名稱 讀文件內容到當前文件中
:w filename 將當前文件內容寫入另一個文件
:! command 執行命令
:r! command 讀入命令的輸出
命令模式
ZZ: 保存退出
ZQ:不保存退出
字符間跳轉:
h: 左 l: 右 j: 下 k: 上
#COMMAND:跳轉由#指定的個數的字符
單詞間跳轉:
w:下一個單詞的詞首
e:當前或下一單詞的詞尾
b:當前或前一個單詞的詞首
# : 命令(w.e.b):由#指定一次跳轉的單詞數
當前頁跳轉:
H:頁首 M:頁中間行 L:頁底
行首行尾跳轉:
^: 跳轉至行首的第一個非空白字符
0: 跳轉至行首
$: 跳轉至行尾
行間移動:
#G、擴展模式:# :跳轉至由#指定行
G:最后一行
1G, gg: 第一行
句間移動:
):下一句 (:上一句
段落間移動:
}:下一段 {:上一段
Ctrl+f: 向文件尾部翻一屏
Ctrl+b: 向文件首部翻一屏
Ctrl+d: 向文件尾部翻半屏
Ctrl+u:向文件首部翻半屏
字符編輯:
x: 刪除光標處的字符
#x: 刪除光標處起始的#個字符
xp: 交換光標所在處的字符及其后面字符的位置
~:轉換大小寫
J:刪除當前行后的換行符
替換命令(r, replace)
r: 替換光標所在處的字符
R:切換成REPLACE模式
刪除命令:
d: 刪除命令,可結合光標跳轉字符,實現范圍刪除
d$: 刪除到行尾
d^:刪除到非空行首
d0:刪除到行首
dw: ?de: ?db:
#COMMAND
dd: 刪除光標所在的行
#dd:多行刪除
D:從當前光標位置一直刪除到行尾,留空行,等同于d$
復制命令(y, yank):
y: 復制,行為相似于d命令
y$ ?y0 ?y^ ?ye ?yw ?yb
#COMMAND
yy:復制行
#yy: 復制多行
Y: 復制整行
粘貼命令(p, paste):
p:緩沖區存的如果為整行,則粘貼到當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面
P:緩沖區存的如果為整行,則粘貼到當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面
改變命令(c, change)
c: 修改后切換成插入模式
?命令模式 –> 插入模式
c$ ?c^ ?c0 ?cb ?ce ?cw
#COMMAND
cc:刪除當前行并輸入新內容,相當于S
#cc:
C:刪除當前光標到行尾,并切換成插入模式
100iwang [ESC] 粘貼“wang”100次
<start position><command><end position>
Command:
y 復制、d 刪除、gU 變大寫、gu 變小寫
例如 0y$ 命令意味著:
0 → 先到行頭
y → 從這里開始拷貝
$ → 拷貝到本行最后一個字符
ye 從當前位置拷貝到本單詞的最后一個字符
后續的還有好多命令,因為還沒整理好就不獻丑啦,這些命令確實有點繞,需要我們多遍的練習實踐,雖然不容易雖然很辛苦,同志們堅持住因為后面的比這更痛苦。沒有付出那來的收獲,為了更好的生活加油?。?!
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95070