记性不好,这里总结一些自己常用的命令,会持续更新,以后用到的会再添加上:
1.sed 1.1 sed替换 直接替换file.txt文件中指定的内容,g:全局替换
1 sed -i '1,$s/abc/123/g' file.txt
不修改文件中的内容,替换后直接输出到屏幕
1 sed '1,$s/abc/123/g' file.txt
批量替换当前目录下以file开头的文件
1 sed '1,$s/abc/123/g' file*
1.2 sed查看 打印出2-5行,并不改变文件中内容:
1.3 sed删除 删除第2行、2-5行、2至最后:
1 2 3 sed '2d' file.txt sed '2,5d' file.txt sed '2,$d' file.txt
1.4 sed添加 1 2 3 4 sed '2a add line' file.txt sed '2i insert line' file.txt sed '2a add line1 \ add line2' file.txt
1.5 sed查找 1 2 3 sed -n '/ooo/p' file.txt sed -n '/ooo/d' file.txt sed -n '/ooo/{s/ooo/kkk/;p;q}'
1.5 sed多点编辑 删除第二行,并将ooo替换为kkk。
1 sed -e '2d' -e 's/ooo/kkk/'
2.awk 2.1 awk基本用法 1 2 3 awk '{print $1,$2}' file.txt awk -F, '{pritn $1,$2}' file.txt awk -f try.awk file.txt
内置变量
描述
$n
当前记录的第n个字段,字段间由FS分隔
$0
完整的输入记录
FS
字段分隔符(默认是任何空格)
IGNORECASE
如果为真,则进行忽略大小写的匹配
NF
一条记录的字段的数目
NR
已经读出的记录数,就是行号,从1开始
OFS
输出字段分隔符,默认值与输入字段分隔符一致。
ORS
输出记录分隔符(默认值是一个换行符)
RS
记录分隔符(默认是一个换行符)
2.2 awk运算符
运算符
描述
=;+=,-=,*=,/=;%=;**=;^=
赋值运算符
||;&&
逻辑或、与
~;!~
正则表达式匹配与不匹配
<;<=;>;>=;!=;==
关系运算符
1 2 awk '$1==2 {print $1,$3}' log.txt awk '$1>2 && $2=="aaa" {print $1,$2,$3}' log.txt
2.3 awk正则匹配 1 2 3 4 5 awk '$2 ~ /th/ {print $2,$4}' log.txt awk '/re/ ' log.txt awk 'BEGIN{IGNORECASE=1} /this/' log.txt awk '$2 !~ /th/ {print $2,$4}' log.txt awk '!/th/ {print $2,$4}' log.txt
2.2 awk if条件语句 1 2 3 4 5 6 7 awk 'BEGIN { a=20; if (a==10) print "a = 10"; else print "a = 20"; }'
1 2 3 4 5 6 awk -F, '{ if($2~/sa59.*/) print "s1_"$1; else if($2~/sa60.*/) print "s2_"$1; else print "s3_"$1}'
3.grep 1 2 3 4 5 6 7 grep -v "aaa" cat test.txt | grep -F -f file.txtgrep -i "aaa" test
4.cut 1 2 3 4 5 6 cut -b 2 file.txt cut -c 2- file.txt cut -c 2,4 file.txt cut -c 2-7 file.txt cut -d "," -f 2 file.txt cut -d "," -f 2- file.txt