linux 常见命令

1.查找进程并杀掉该进程

ps -ef|grep XXX|grep -v grep|awk '{print $1}'|xargs kill -9

2.awk
awk行处理器,在处理大文件时不会出现内存溢出或者处理缓慢的问题。
语法:awk [-F fs] [-v var=value] [-f progfile | 'prog'] [file ...],,-F指定分隔符,-f调用脚本,-v定义变量
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
BEGIN 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
END 结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
使用:
1.awk -F:指定分隔符

awk -F":" '{print $1}'  /etc/passwd
awk -F":" '{print NF}'  /etc/passwd //每行多少个字段
awk -F":" '{print $NF}'  /etc/passwd //每行第NF个字段的值

打印出来

awk -F":" '{print NR}'  /etc/passwd 每行的记录号,多文件记录递增
awk -F":" '{print FNR}'  /etc/passwd FNR        与NR类似,不过多文件记录不递增,每个文件都从1开始
awk -F: 'NR==5{print}'  /etc/passwd                  //显示第5行

1.1 匹配代码块
//纯字符匹配 !//纯字符不匹配 ~//字段值匹配 !~//字段值不匹配 ~/a1|a2/字段值匹配a1或a2

awk '!/mysql/{print $0}' /etc/passwd                  //输出不匹配mysql的行
awk -F: '$1!~/mail/{print $1}' /etc/passwd          //不匹配

1.2 if 语句 必须用在{}中,且比较内容用()扩起来

awk -F: '{if($1~/mail/) print $1}' /etc/passwd   //
awk -F: '{if($1~/mail/) {print $1}}'  /etc/passwd       
awk -F: '{if($1~/mail/) {print $1} else {print $2}}' /etc/passwd  

1.3 输出分隔符

awk '$6 ~ /WAIT/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt        //输出字段6匹配WAIT的行,其中输出每行行号,字段4,5,6,并使用制表符分割字段

IF语句

awk -F: 'BEGIN{A=0;B=0} {if($3>100) {A++; print "large"} else {B++; print "small"}} END{print A,"\t",B}' /etc/passwd 

while语句

awk -F: 'BEGIN{i=1} {while(i

应用:
统计netstat -anp 状态为LISTEN和CONNECT的连接数量分别是多少

netstat -anp|awk '$6~/LISTEN|CONNECTED/{sum[$6]++} END{for (i in sum) printf "%-10s %-6s %-3s \n", i," ",sum[i]}'

awk -F ',' '{if(length($1)>1||length($4)>1) print $1 "," $4}’ write0-1000.csv |uniq|awk -F ',' '{if(length($1)>1) {temp=$1} print temp "," $2}’>write0-1000.csv.0

3.sed
3.1 替换

sed 's/aa/aas/' file //替换
sed 's/aa/aas/g' file //全文替换
sed -n 's/test/TEST/p' file // -n选项和p命令一起使用表示只打印那些发生替换的行
sed -i 's/book/books/g' file //直接编辑文件选项-i,会匹配file文件中每一行的第一个book替换为books
sed 's/test/tests/2g' file 当需要从第N处匹配开始替换时,可以使用 /Ng

3.2 删除

sed '/^$/d' file //删除空白行
sed '2d' file  //删除第二行
sed '2,$d' file //删除文件的第2行到末尾所有行:

3.3 已匹配字符串标记&
正则表达式 \w+ 匹配每一个单词,使用 [&] 替换它,& 对应于之前所匹配到的单词:

echo this is a test line | sed 's/\w\+/[&]/g'
[this] [is] [a] [test] [line]
sed 's/^192.168.0.1/&localhost/' file
192.168.0.1localhost

3.4 子串匹配标记\1

echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/'
this is 7 in a number
echo aaa BBB | sed 's/\([a-z]\+\) \([A-Z]\+\)/\2 \1/'
BBB aaa

3.5 选定行的范围:,(逗号)

sed -n '5,/^test/p' file //打印从第5行开始到第一个包含以test开始的行之间的所有行

3.6 -e选项允许在同一行里执行多条命令

sed -e '1,5d' -e 's/test/check/' file

3.6 从文件读入:r命令

sed '/test/r file' filename //file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面
sed -n '/test/w file' example  //在example中所有包含test的行都被写入file里
sed '/^test/a\this is a test line' file //将 this is a test line 追加到 以test 开头的行后面
sed '/^test/i\this is a test line' file  //将 this is a test line 追加到以test开头的行前面

你可能感兴趣的:(linux 常见命令)