tcpdump/grep/sed/awk/vi简单命令
《鸟哥的Linux私房菜》
tcpdump
# tcpdump [-i接口] [-w 保存文件名] [-c 个数]
-i:后接要监听的网络接口如eth0,wlan0,lo,ppp0
-w:包数据存下来文件名
-c:监听包个数
不区分源地址和目的地址,过滤IP # tcpdump -i eth1 host 192.168.1.1 |
过滤源地址 |
过滤目的地址 |
不区分源端口和目的端口,过滤端口 |
过滤源端口 |
过滤目的端口 |
过滤网络 |
过滤协议 |
tar
tar [-j|-z] [cv] [-f 新建文件名] file 打包与压缩
tar [-j|-z] [xv] [-f 文件名] [-C 目录] 解压缩
tar [-j|-z] [tv] [-f 文件名] 查看文件
三选一参数: -c 新建打包文件 -x 解压 -t 查看打包文件中有哪些文件名 |
其它参数: -j 通过bzip2 进行压缩、解压,此时文件名最好为*.tar.bz2 -z 通过gzip 进行压缩、解压,此时文件名最好为*.tar.gz -v 在压缩、解压过程中,显示正在处理的文件名 -f filename 要新建或者要处理的文件 -C 目录 解压时,在特定目录下解压 |
仅解开单一文件 先找到需要的文件 tar –jtv –f /root/etc.tar.bz2 |grep ‘test’ tar –jxv –f /root/etc.tar.bz2 etc/test |
仅备份比某个时刻还要新的文件 tar –jcv –f /root/etc.newer.tar.bz2 –newer-mtime=”2022/01/15” /etc/* |
strings
strings -f "*.so" | grep "xxxxxx"
看那个so中包含"xxxxxx"
grep
grep [–A2] [–B3] [-n] [-v] [-i] [--color=auto] ‘搜索字符串’ filename
-A 列出找出的行外,后续2行也列出来
-B 列出找出的行外,前面3行也列出来
-n 显示行号
-v 反向选择,显示不匹配的行
-i 不区分大小写搜索
grep –n ‘t[ae]st’ test.txt 查找包括 tast ,test的行 |
grep –n ‘[^g]oo’ test.txt 查找oo,但前面不是g |
grep –n ‘[^a-z]oo’ test.txt 查找oo,但前面不是小写字母 |
grep –n ‘[0-9]’ test.txt 查找有数字的行 |
grep –n ‘^the’ test.txt 查找the 开头的行 |
grep –n ‘^[a-z]’ test.txt 查找小写字符开头的行 grep –n ‘^[^a-zA-Z]’ test.txt 不是英文字符开头的行 |
grep –n ‘^$’ test.txt 查找空白行 |
基础正则表达式字符
^word |
待查找的字符串在行首 |
word$ |
待查找的字符串在行尾 |
. |
代表一定有一个任意字符的字符 |
* |
重复零个无穷多个前一个字符 |
[list] |
字符集合中的RE字符里找出想要选择的字符 |
[n1-n2] |
字符集合中的RE字符里找出想要选择的字符范围 |
[^list] |
字符集合中的RE字符里找出不要选择的字符范围 |
sed
sed [-ni] [n1[,n2]] function
-n 使用安静模式
-i 直接修改读取的文件内容
n1,n2 代表选择进行动作的行数
function参数:
a 在目前的下一行新增一行,后面可以接字符串
c 替换,后面可以接字符串
d 删除
i 在目前的上一行插入一行
p 打印 sed –n 一起使用
s 替换 1,20s/old/new/g
#nl /etc/passwd |sed ‘2,5d’ 列出/etc/passwd的内容,同时将2-5行删除 |
# nl /etc/passwd |sed ‘2a hello’ 在第二行(第三行)后加上hello # sed –i ‘$a #This is end.’ Test.txt 在Test.txt 最后加入一行’#This is end.’ |
# nl /etc/passwd |sed ‘2,5c hello’ 将2-5行换成hello |
# sed –i ‘s/\.$/\!/g’ Test.txt 将Test.txt内每一行结尾为”.”换成”!” |
awk
awk ‘条件类型1{动作1} 条件类型2{动作2} …’ filename
- 读入第一行,并将第一行的数据填入$0,$1,$2等变量中
- 依据条件类型限制,判断是否需要进行后面的动作
- 做完所有的动作与条件类型
- 若还有后续行的数据,重复1-3,直到所有数据都读完
NR awk处理的第几行数据
NF 每一行拥有的字段总数
FS 目前的分隔符,默认是空格键
#last –n 5|awk ‘{print $1 “\t lines: ” NR “\t columes: ” NF}’ |
#cat /etc/passwd|awk ‘BEGIN {FS=”:”} $3 < 10 {print $1 “\t” $3}’ 因为默认分隔符是空格键,所以,如果想第一行就用其它分隔符,需要用BEGIN预先设置awk的变量 |
#cat pay.txt|awk ‘NR==1{print “%10s %10s \n”,$1,$2,”Total”} NR>=2{total=$1+$2 printf “%10d %10d %10.2f\n”,$1,$2,total}’ |
Vi
按键说明
一般模式:
0 |
光标移到到这一行的最前面 |
$ |
移动到行尾 |
G |
移动到这个文件最后一行 |
nG(n数字) |
移动到第n行 |
gg |
移动到第一行,=1G |
n[enter](n数字) |
向下移动n行 |
/word |
向下查找word |
?word |
向上查找word |
n(字母) |
重复前一个查找动作 |
N(字母) |
方向重复前一个查找动作 |
:n1,n2s/word1/word2/g |
第n1行与第n2行之间,查找word1,并替换 |
:1,$s/word1/word2/g |
从第一行到最后一行,查找替换 |
:1,$s/word1/word2/gc |
从第一行到最后一行,查找替换,但替换前需要用户确认是否需要替换 |
xX |
X向前删除一个字符,x向后删除一个字符 |
dd |
删除一行 |
yy |
复制光标所在行 |
nyy |
复制光标所在的下n行 |
一般模式切换到编辑模式:
I,i |
I在目前所在行第一个非空格符处插入 i从目前光标所在处插入 |
A,a |
A在目前所在行最后一个字符处插入 a从目前光标所在的下一个字符处开始插入 |
O,o |
O 在目前光标所在处上一行插入新的一行 o 在目前光标所在行下一处插入新的一行 |
一般模式切换到命令行模式:
:w |
将编辑写入硬盘 |
:w! |
强制写入 |
:q |
离开vi |
:q! |
若修改过文件,又不想存储,强制离开不保存 |
:wq |
写入后离开 |
:wq! |
强制保存后离开 |