grep -v 筛选内容除了 -v后面的
遍历命令 for a in $(命令:cat file )
'dirname $0' 显示当前脚本所在路径
sed 替换:
sed 's /test/task/2' xxx.txt 把第二次出现的test替换为task
sed 's /test/task/g' xxx.txt 把所有出现的test都替换成task
sed -n 's/tset/task/p' xxx.txt 把所有tset替换成task的行打印出来
sed 's/test/task/w xxx.txt aaa.txt 将修改的内容打印到aaa.txt中
sed '2,3s/test/task/' xxx.txt 把第2,3行的test替换成task
sed '2,$s/test/task' 从第二行开始 后面的都替换
sed -i 's/2/10/g' a.txt 把a.txt中得所有2替换成10
sed -i '2a ppppppp' test.txt #在第二行之后添加数据,并写入到原文件
sed 删除命令:delete
sed '2,3d' xxx.txt 删除第二三行
sed 'wanggang 1 d' xxx.txt 删除里面还有 wanggang 1 的行
echo " wanggang " | sed 'i\gaomin ' 'i 把前面的wanggang插入到gaomin前面
echo "wanggang " |sed 'a\gaomin ' 'a 插入到文本的后面
sed打印命令:print
sed -n'/dev/sda/p' dh.txt -n禁止输出其他行 p 打印 打印匹配到/dev/sda/的行
sed -n'/num 1/{ 打印num所在行
> = = 代表num行数
> p p 表示打印
>}' data.txt
sed -i 'N;4addpdf' a.txt 第四行前添加
sed -i 'N;4ieepdf' a.txt 第四行后添加
sed处理文件 :w
sed -n 'w/data.txt/' bak.txt 把bak.txt的内容 打印到 data.txt
sed -n 'abc/w/data.txt' bak.txt 把bak.txt里面含有abc的行打印到data.txt里面
echo "The cat sleeps in his hat" | sed 's/.at/"&"/g'
The "cat" sleeps in his "hat" &把匹配到的.at 里面都加引号
gawk进阶
gawk '{print $1}' data.txt 查询data文件中每一行第一个字段
gawk -F: '{print $1}' /etc/passwd 分行查询文件中的内容
gawk中支持多个命令同时执行 在命令中用 ;分隔就行
echo " my name is wanggang" |gawk '{$4="ganggang";print $0}' $4是把第四个字符换成ganggang,$0打印全部
echo red | passwd --stdin $name passwd --stdin $name是更改$name变量的密码,$name变量指代上面for循环的三个用户xp ,wrg, lct
加上--stdin是接受echo后面的字符串(red)做为密码,密码是red
awk的使用:
last -5 |awk '{print $1}' 打印 last -5输出的第一列内容
cat /etc/passwd |awk -F ':' '{print $1}' 以:为分隔符 打印passwd的第一列
cat /etc/passwd |awk -F ':' '{print $1"\t"$7}' 打印passwd的第一列和第七列用\t分割
cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/bash"}'
打印passwd 在第一行添加name,shell 最后一行添加 blue,/bin/bash,第一列和第七列用,分开
cat '/etc/passwd' |awk -F : '/sshd/{print $0}' 打印匹配到 sshd的行
cat text | awk -F '\t' '$2 >= 10 {print $1, " is Expensive"}'
打印text里面第二列大于等于10的行的第一列在后面加is Expensive
cat text | awk -F '\t' '$2 >= 10 {print $1, " is Expensive"} $2
打印 text里面 第二列大于等于10的第一列后面加 is Expensive ,第二列小于等于9的第一列后面加is cheap
NR==3 只处理显示出来的第三个数据
echo $(date -d last-day +%Y-%m-%d) 昨天的日期命令。