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