1.基礎python
*
和 #
對對當前光標所在的單詞進行搜索(, {, [
K
查看man手冊ga
查看ascii值g CTRL-G
統計字數,使用Visual模式選取統計部分q:
打開歷史記錄窗口:marks
打開編輯標記窗口, `0
準確回到上一次退出vim的位置gf
打開光標下的指定文件, CTRL-W f
在新窗口中打開:set fileformat=unix
>>/<<
:set virtualedit=all
, 退出 :set virtualedit=
。特別適用於表格編輯gv
再次選定上次選擇的Visual區域CTRL-A
, CTRL-X
對數字加/減ls | vim -
從標準輸入讀取要編輯的內容\c, \C
忽略/不忽略大小寫匹配/
重複前一次搜索zM
關閉全部折行, zR
打開全部折行, zo, zc
打開,關閉某個折行"xy
複製到x緩衝區, "xp
粘貼x緩衝區, "+y
複製到系統剪貼板, "+p
從系統剪切板粘貼2.光標移動linux
3.可視化選擇git
4.替換正則表達式
:20,100s/bc/a&d/g
# 表示把bc替換爲abcd(& 是一個特殊字符,表示被替換的內容。):%s/^/\=line('.')."\t"/ # 在每行的行首添加行號數字和tab
:10,20s/^/\=line('.')."\t"/ # 從10到20行的行首添加數字和tab
:let counter=0|10,20g//let counter=counter+1|s/^/\=counter."\t" # 從0開始添加數字
5.匹配與搜索vim
/ab*
「*」匹配任意個(零個或多個)b/\(ab\)*
「ab」做爲總體/ab\+
「+」至少一次/folders\=
「=」一次或零次/ab\{m,n}
匹配至少m次,至多n次/foo\|bar
「|」模式中的或操做
\d 數字 [0-9] \D 非數字 [^0-9] \x 十六進制數 [0-9a-fA-F] \X 非十六進制數 [^0-9a-fA-F] \s 空白字符 [ ] (<Tab> 和<Space>) \S 非空白字符 [^ ] (除 <Tab> 和 <Space>以外) \l 小寫字母 [a-z] \L 非小寫字母 [^a-z] \u 大寫字母 [A-Z] \U 非大寫字母 [^A-Z]
1.指令bash
a\ 在當前行下面插入文本。
i\ 在當前行上面插入文本。
c\ 把選定的行改成新的文本。
d 刪除,刪除選擇的行。
D 刪除模板塊的第一行。
s 替換指定字符
h 拷貝模板塊的內容到內存中的緩衝區。
H 追加模板塊的內容到內存中的緩衝區。
g 得到內存緩衝區的內容,並替代當前模板塊中的文本。
G 得到內存緩衝區的內容,並追加到當前模板塊文本的後面。
l 列表不能打印字符的清單。
n 讀取下一個輸入行,用下一個命令處理新的行而不是用第一個命令。
N 追加下一個輸入行到模板塊後面並在兩者間嵌入一個新行,改變當前行號碼。
p 打印模板塊的行。
P(大寫) 打印模板塊的第一行。
q 退出Sed。
b lable 分支到腳本中帶有標記的地方,若是分支不存在則分支到腳本的末尾。
r file 從file中讀行。
t label if分支,從最後一行開始,條件一旦知足或者T,t命令,將致使分支到帶有標號的命令處,或者到腳本的末尾。
T label 錯誤分支,從最後一行開始,一旦發生錯誤或者T,t命令,將致使分支到帶有標號的命令處,或者到腳本的末尾。
w file 寫並追加模板塊到file末尾。
W file 寫並追加模板塊的第一行到file末尾。
! 表示後面的命令對全部沒有被選定的行發生做用。
= 打印當前行號碼。
# 把註釋擴展到下一個換行符之前。
2.替換標記this
g 表示行內全面替換。 p 表示打印行。 w 表示把行寫入一個文件。 x 表示互換模板塊中的文本和緩衝區中的文本。 y 表示把一個字符翻譯爲另外的字符(可是不用於正則表達式) \1 子串匹配標記 & 已匹配字符串標記
3.元字符集spa
^ 匹配行開始,如:/^sed/匹配全部以sed開頭的行。
$ 匹配行結束,如:/sed$/匹配全部以sed結尾的行。
. 匹配一個非換行符的任意字符,如:/s.d/匹配s後接一個任意字符,最後是d。
* 匹配0個或多個字符,如:/*sed/匹配全部模板是一個或多個空格後緊跟sed的行。
[] 匹配一個指定範圍內的字符,如/[ss]ed/匹配sed和Sed。 [^] 匹配一個不在指定範圍內的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。 \(..\) 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替換成lovers。 & 保存搜索字符用來替換其餘字符,如s/love/**&**/,love這成**love**。 \< 匹配單詞的開始,如:/\<love/匹配包含以love開頭的單詞的行。 \> 匹配單詞的結束,如/love\>/匹配包含以love結尾的單詞的行。 x\{m\} 重複字符x,m次,如:/0\{5\}/匹配包含5個0的行。 x\{m,\} 重複字符x,至少m次,如:/0\{5,\}/匹配至少有5個0的行。 x\{m,n\} 重複字符x,至少m次,很少於n次,如:/0\{5,10\}/匹配5~10個0的行。
4.示例.net
sed 's/book/books/' file # 字符串替換sed -n 's/test/TEST/p' file # 只打印那些發生替換的行翻譯
sed -i 's/book/books/g' file # 替換源文件sed 's/book/books/g' file # 全局替換echo sksksksksksk | sed 's/sk/SK/3g' # 從第三個開始替換sed '/^$/d' file # 刪除空行sed '2d' file # 刪除第2行sed '2,$d' file # 刪除第2行至文件末尾sed '$d' file # 刪除最後一行sed '/^test/d' file # 刪除以test開頭的行echo this is a test line | sed 's/\w\+/[&]/g' # 匹配單詞,替換成[單詞]的形式sed 's/^192.168.0.1/&localhost/' file # 把以192.168.0.1開頭的行替換爲192.168.0.1localhostecho this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/' # 把digit 7替換爲7echo aaa BBB | sed 's/\([a-z]\+\) \([A-Z]\+\)/\2 \1/' # 交換aaa和BBB的位置sed -n 's/\(love\)able/\1rs/p' file # 匹配loveable,替換爲lovers,並打印出來這些替換的行sed '表達式' | sed '表達式' # 多個sed經過管道鏈接sed -n '/test/,/check/p' file # 打印test到check直接的行sed -n '5,/^test/p' file # 打印從第5行開始,到第一個以test開始之間的全部行sed '/test/,/west/s/$/aaa bbb/' file # 把test到west之間的行的末尾替換成aaa bbbsed -e '1,5d' -e 's/test/check/' file # 先刪除第1行到第5行,再把test替換爲check
1. 內建變量
$0 | 當前記錄(這個變量中存放着整個行的內容) |
$1~$n | 當前記錄的第n個字段,字段間由FS分隔 |
FS | 輸入字段分隔符 默認是空格或Tab |
NF | 當前記錄中的字段個數,就是有多少列 |
NR | 已經讀出的記錄數,就是行號,從1開始,若是有多個文件話,這個值也是不斷累加中。 |
FNR | 當前記錄數,與NR不一樣的是,這個值會是各個文件本身的行號 |
RS | 輸入的記錄分隔符, 默認爲換行符 |
OFS | 輸出字段分隔符, 默認也是空格 |
ORS | 輸出的記錄分隔符,默認爲換行符 |
FILENAME | 當前輸入文件的名字 |
2.示例
awk
'BEGIN{FS=":"} {print $1,$3,$6}'
OFS=
"\t"
/etc/passwd # 在處理前設置使用:做爲分隔符,對/etc/passwd打印第一、三、6列
awk
'$6 !~ /WAIT/ || NR==1 {print NR,$4,$5,$6}'
OFS=
"\t"
netstat
.txt
# 匹配第6列不包含WAIT的行,並打印行號、第四、五、6列
awk
'NR!=1{print > $6}'
netstat
.txt
# 按第6列的名字進行文件拆分
ls
-l *.py |
awk
'{sum+=$5} END {print sum}'
# 統計python文件的總大小
ps
aux |
awk
'NR!=1{a[$1]+=$6;} END { for(i in a) print i ", " a[i]"KB";}'
# 統計每一個用戶進程佔用內存的大小awk
'length>80'
file
# 獲取長度大於80的行netstat
-ntu |
awk
'{print $5}'
|
cut
-d: -f1 |
sort
|
uniq
-c |
sort
-nr
# 按鏈接數查看客戶端IP
grep 'nos_client' -nr . # n表示打印行號,r表示遞歸查找
grep -noE 'gm_client\.[a-zA-Z_]+' vhttpservice.py # E表示使用正則表達式匹配,o表示僅打印匹配結果
$grep -C 5 'parttern' inputfile //打印匹配行的先後5行$grep -A 5 'parttern' inputfile //打印匹配行的後5行$grep -B 5 'parttern' inputfile //打印匹配行的前5行