指令个人记录
grep
返回file_name中包括11111的文本行
grep 11111 file_name
grep "11111" file_name #字符串中含空格用双引号括起来
grep 11111 file_1 file_2 file_3
-E正则表达式匹配
grep -E "[1-9]+"
-v返回file_name中不包括11111的文本行
grep -v 11111 file_name
搜索命令行历史记录中 输入过 git
命令的记录
history | grep git
-c统计文件或者文本中包含匹配字符串的行数
grep -c 11111 file_name
-l查找匹配文本在哪些文件中 ,返回文件名
grep -l 11111 file1 file2 file3...
-r 递归查找
grep -r 11111 .
# .表示当前目录。
-i忽略匹配样式中的字符大小写
grep -i "HELLO"
-I
使得grep在处理二进制文件时不进行匹配
grep -I "pattern" *
打印出匹配文本之前-A或者之后-B(之前&之后-C )的行:
seq 10 | grep -A 3 "5"
在grep搜索结果中包括或者排除指定文件
# 只在目录中所有的.php和.html文件中递归搜索字符"main()"
grep "main()" . -r --include *.{php,html}
# 在搜索结果中排除所有README文件
grep "main()" . -r --exclude "README"
# 在搜索结果中排除filelist文件列表里的文件
grep "main()" . -r --exclude-from filelist
grep -r "pattern" . --exclude-dir=".git"
-o只输出文件中匹配到的部分
echo this is a test line. | grep -o -E "[a-z]+."
line.
-e 制动多个匹配样式:
echo this is a text line | grep -e "is" -e "line" -o
is
is
line
-Z使得grep在输出/读取文件名时使用ASCII NUL字符(\0)代替通常的换行符
#-Z选项来指定以0值字节作为终结符文件名(\0),xargs -0 读取输入并用0值字节终结符分隔文件名,然后删除匹配文件
grep "aaa" file* -lZ | xargs -0 rm
#-print0 告诉 find 命令以 ASCII NUL 字符(\0)作为分隔符来输出文件名,而不是使用换行符
find . -type f -print0 | grep -Z "pattern"
#file 1.txt\0
#file 2.txt\0
-f从指定的文件中读取匹配规则,每行作为一个规则
grep -f rules.txt input.txt
-m num 匹配 num 行后停止读取文件
grep -m 5 'example' *.txt
-q不进行标准输出。如果发现匹配项,则立即退出,并返回状态码0
if grep -q 'example' file.txt; then
echo "Pattern found in file.txt"
else
echo "Pattern not found in file.txt"
fi
-n在输出匹配行时显示其在文件中的行号
grep -n "pattern" file.txt
[root@ufo666 ~]# grep -n 'word' file.txt
2:This is a word
3:This is a word
4:This is a word
5:Another word here
6:A sentence without the wordss
pip
看当前环境包的版本
pip list
看某个特定包
pip show <包名>
vim
常用
移动 | |
n+上下左右箭头 | 移动n个字符/n行 |
0 | 光标移动到该行最前面字符 |
^ | 到本行第一个不是blank字符的位置 |
$ | 光标移动到该行最后面字符 |
g_ | 到本行最后一个不是blank字符的位置。 |
G | 光标移动到文件最后一行 |
nG | 光标移动到文件第n行 |
w | 到下一个单词的开头(单词由字母,数字和下划线组成) |
e | 到本单词的结尾(单词由字母,数字和下划线组成) |
W | 到下一个单词的开头(单词是由blank字符分隔) |
E | 到本单词的开头(单词是由blank字符分隔) |
查找 | |
/word | 从当前光标处往下查找字符串word |
?word | 从当前光标处往上查找字符串word |
n | 重复前一个查找操作,若上一个操作为/word 则继续向下查找word;,若上一个操作为?word 则继续向上查找word |
N | 找上一个结果 |
* 和 # | 匹配光标当前所在的单词(*向下,#向上) |
复制 | |
yy | 复制光标所在行 |
nyy | 复制光标所在的向下n行 |
删除 | |
dd | 删除光标所在行 |
ndd | 删除光标所在向下n行 |
粘贴 | |
p | 将已复制数据粘贴在光标下一行 |
P | 粘贴到光标所在行,原来内容下移 |
u | 撤销前一个操作 |
. | 重复前一个操作 |
ctrl+r | 取消撤销 |
插入 | |
i | 光标所在处插入 |
I | 光标所在行第一个非空格符号处插入 |
o | 光标所在行下一行处插入新的一行 |
O | 光标所在行上一行处插入新的一行 |
:w | 将编辑的数据写入硬盘文件种 |
:q | 退出vi |
:wq | 保存并退出 |
ZZ | 若文件未被修改则不保存退出;若文件被修改,则保存后退出 |
:w filename | 将编辑的数据另存为filename文件 |
:r filename | 将filename文件内容加到当前光标所在行后 |
:e filename | 打开一个文件 |
:set nu | 显示行号 |
:set nonu | 取消显示行号 |
cw | 把光标位置到下一个单词之前的内容删掉 |
:q! | 退出不保存 |
:bn 和 :bp | 可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。 |
% | 所有行/匹配下一个括号,并匹配另一半 |
- s/要替换的关键字/替换后的关键字 + 回车替换光标所在行的第一个(从左到右)满足条件的关键字
- s/要替换的关键字/替换后的关键字g + 回车替换光标所在行的所有满足条件的关键字
- %s/要替换的关键字/替换后的关键字 + 回车针对文件的所有行进行替换(每行满足条件的第一个关键字)
- %s/要替换的关键字/替换后的关键字g + 回车 针对文件的所有行进行替换(每行所有满足条件的关键字)
在n1到n2行之间寻找word1,并将word1替换为word2
:n1,n2s/word1/word2/g
在1到最后一行之间寻找word1,并将word1替换为word2,替换前提示用户进行确认(confirm)
:1,$s/word1/word2/gc
全局将word1替换为word2
%s/word1/word2/g
ye
,从当前位置拷贝到本单词的最后一个字符
y2/foo,拷贝2个 “foo” 之间的字符串。
块选择
v | 字符选择,将光标经过的字符选择 |
V | 行选择,将光标经过的行选择 |
y | 将选中地方复制起来 |
d | 将选中地方剪切 |
p | 复制 |
参考:
【Linux】vim常用命令_dit anyway-CSDN博客
vim区域选择_如何在vim中垂直从所有行中快速选择区域-CSDN博客