vi 命令
常用形式:
vi
直接輸入vi可以查看vi的版本信息
vi [filepath]
若存在該文件,則打開存在文件;若不存在,將新建文件名為[文件名]的文件。
模式:
命令模式
輸入模式
末行模式
注:無論在任何模式下按【Esc】都可以返回到命令模式。
命令模式
光標移動:
k 上
j 下
h 左
l 右
^ 移動到行首
$ 移動到行尾
[第n行]G 跳轉到第n行
翻頁:
Ctrl+F 向前翻一頁
Ctrl+B 向後翻一頁
Ctrl+U 向前翻半頁
Ctrl+D 向後翻半頁
刪除操作
x 刪除光標位置的字符
dd 刪除光標所在行
dw 刪除當前字符到單詞尾包括空格的所有字符
撤銷操作
u 取消最近一次操作
U 取消所有操作
Ctrl+R 恢復對u命令的操作
複製操作
[n]yy 複製n行,若無行數,只複製當前行
[n]yw 複製n個單詞,若無行數,只複製光標到單詞尾
y$ 複製光標到行尾
y^ 複製光標到行首
輸入模式
光標移動:
Home 行首
End 行尾
Page Up 向前翻頁
Page Down 向後翻頁
Delete 刪除光標位置的字符
末行模式
保存與退出:
:q! 強制退出
:w 保存
:w [文件名] 另存為
:wq 保存並退出
:wq! 保存並強制退出
顯示行號
set nu 顯示行號
set nonu 取消行號
查找和替換:
/[key] 從光標位置開始找key(n:下一個,N:上一個)
:s/dtinone/jiamigu 用jiamigu替換首次出現的dtinone
:s/dtinone/jiamigu/g 用jiamigu替換行中出現的所有dtinone
:[n,m] s/dtinone/jiamigu/g 用jiamigu替換第n行到第m行中出現的dtinone
: % s/dtinone/jiamigu/g 用jiamigu替換所有的dtinone
:s/dtinone/jiamigu/c 用jiamigu替換首次出現的dtinone,用戶需要確認。[/c]適用上面所有命令,其中y為替換,n為不替換,a為剩下的所有都替換,q為退出,l為替換並退出
sed 命令
常用形式:
注:所有對原文件的修改都不會真實生效,需要加上參數-i才會生效。
打印:
sed ‘/dtinone/p’ dtinone.txt
打印dtinone.txt中包含dtinone的行。默認情況sed把所有行都打印到屏幕,如果某行匹配到模式,則把該行另外再打印一遍。
sed -n ‘/dtinone/p’ dtinone.txt
和上面一樣,只是去掉了sed的默認行為,只會打印匹配的行。
刪除:
sed ‘3,$d’ dtinone.txt
刪除從第3行到最後一行的內容。
sed ‘$d’ dtinone.txt
刪除最後一行的內容
sed ‘/dtinone/d’ dtinone.txt
刪除包含dtinone的行。
sed ‘3d’ dtinone.txt
刪除第三行的內容
替換:
sed ‘s/dtinone/jiamigu/g’ dtinone.txt
把行內的所有dtinone替換成jiamigu,如果沒有g,則只替換行內的第一個dtinone
sed -n ‘s/dtinone/jiamigu/p’ dtinone.txt
只打印發生替換的那些行
sed ‘s/dtinone/&jiamigu/’ dtinone.txt
在所有的dtinone後面添加jiamigu(&表示匹配的內容)
sed -n ‘s/dtinone/jiamigu/gp’ dtinone.txt
把所有的dtinone替換成jiamigu,並打印發生替換的那些行
sed ‘s#dtinone#jiamigu#g’ dtinone.txt
把所有的dtinone替換成jiamigu,跟在替換s後面的字符就是查找串和替換串之間的分割字符,本例中是#
sed -e ‘1,3d’ -e ‘s/dtinone/jiamigu/g’ dtinone.txt
刪除1-3行,然後把其餘行的dtinone替換成jiamigu
讀文件:
sed ‘/dtinone/r new_dtinone.txt’ dtinone.txt
在包含dtinone的行後讀入new_dtinone.txt的內容
寫文件:
sed ‘/dtinone/w new_dtinone.txt’ dtinone.txt
在包含dtinone的行寫入new_dtinone.txt
追加:
sed ‘/dtinone/a\jiamigu’ dtinone.txt
在包含dtinone的行後新起一行,寫入jiamigu
插入:
•sed ‘/dtinone/i\jiamigu’ dtinone.txt
在包含dtinone的行前新起一行,寫入jiamigu
修改:
sed ‘/dtinone/c\jiamigu’ dtinone.txt
在包含dtinone的整行替換成jiamigu,舊文本被覆蓋
讀取下一行:
sed ‘/dtinone/{n ; s/bigdata/ai/g;}’ dtinone.txt
匹配第一個包含dtinone的行後的所有行,替換bigdata為ai
轉換:
sed ‘y/dtinone/DTINONE/’ dtinone.txt
將d替換成D,t替換成T,i替換成I……(正則表達式元字符不起作用)
退出:
sed ‘/dtinone/{ s/bigdata/ai/ ;q; }’ dtinone.txt
在某行包含了dtinone,把bigdata替換成ai,然後退出sed,不繼續執行下一個匹配的。
閱讀更多 加米穀大數據 的文章