sed 删除最后几行 和删除指定行 awk使用
Posted xiaofeng666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed 删除最后几行 和删除指定行 awk使用相关的知识,希望对你有一定的参考价值。
sed 删除最后几行 和删除指定行
sed 想删除文件中的指定行,是可以用行号指定也可以用RE来匹配的。
删除指定的行【可以指定行号删除、匹配字符串来删除】
[root@Jason64-17 ~]# cat -n seq.txt 1 ok i will help you 2 understand sed usage 3 how to use it 4 and we should use it in view 5 now let us 6 go 7 hello my name is [root@Jason64-17 ~]# cat -n seq.txt | sed 3d 1 ok i will help you 2 understand sed usage 4 and we should use it in view 5 now let us 6 go 7 hello my name is [root@Jason64-17 ~]# cat -n seq.txt | sed /should/d 1 ok i will help you 2 understand sed usage 3 how to use it 5 now let us 6 go 7 hello my name is [root@Jason64-17 ~]# cat -n seq.txt | sed /ow/d 1 ok i will help you 2 understand sed usage 4 and we should use it in view 6 go 7 hello my name is [root@Jason64-17 ~]# cat -n seq.txt | sed -r /how\|should/d 1 ok i will help you 2 understand sed usage 5 now let us 6 go 7 hello my name is
删除最后几行
[root@Jason64-17 ~]# seq 5 > seq01.txt [root@Jason64-17 ~]# cat seq01.txt 1 2 3 4 5 [root@Jason64-17 ~]# for((i=1;i<4;i++)); do sed -i ‘$d‘ seq01.txt ; done #C式for循环 [root@Jason64-17 ~]# cat seq01.txt 1 2 [root@Jason64-17 ~]# seq 5 > seq01.txt [root@Jason64-17 ~]# cat seq01.txt 1 2 3 4 5 [root@Jason64-17 ~]# i=1; while [ $i -le 3 ]; do sed -i ‘$d‘ seq01.txt; ((i++)); done #while循环 [root@Jason64-17 ~]# cat seq01.txt 1 2 [root@Jason64-17 ~]# seq 5 > seq01.txt [root@Jason64-17 ~]# cat seq01.txt 1 2 3 4 5 [root@Jason64-17 ~]# for i in `seq 3`; do sed -i ‘$d‘ seq01.txt ; done #bash for循环 [root@Jason64-17 ~]# cat seq01.txt 1 2 [root@Jason64-17 ~]# seq 5 > seq01.txt [root@Jason64-17 ~]# cat seq01.txt 1 2 3 4 5 #until 循环 [root@Jason64-17 ~]# seq 5 > seq01.txt [root@Jason64-17 ~]# cat seq01.txt 1 2 3 4 5 [root@Jason64-17 ~]# i=3; until [ $i -le 0 ]; do sed -i ‘$d‘ seq01.txt ; ((i--)); done [root@Jason64-17 ~]# cat seq01.txt 1 2 [root@Jason64-17 ~]#
awk练习题
wang 4
cui 3
zhao 4
liu 3
liu 3
chang 5
li 2
cui 3
zhao 4
liu 3
liu 3
chang 5
li 2
1 通过第一个域找出字符长度为4的
2 当第二列值大于3时,创建空白文件,文件名为当前行第一个域$1 (touch $1)
3 将文档中 liu 字符串替换为 hong
4 求第二列的和
5 求第二列的平均值
6 求第二列中的最大值
7 将第一列过滤重复后,列出每一项,每一项的出现次数,每一项的大小总和
2 当第二列值大于3时,创建空白文件,文件名为当前行第一个域$1 (touch $1)
3 将文档中 liu 字符串替换为 hong
4 求第二列的和
5 求第二列的平均值
6 求第二列中的最大值
7 将第一列过滤重复后,列出每一项,每一项的出现次数,每一项的大小总和
1、字符串长度
awk ‘length($1)=="4"print $1‘
2、执行系统命令
awk ‘if($2>3)system ("touch "$1)‘
3、gsub(/r/,"s",域) 在指定域(默认$0)中用s替代r (sed ‘s///g‘)
awk ‘gsub(/liu/,"hong",$1);print $0‘ a.txt
4、列求和
df -h | awk ‘a+=$2ENDprint a‘
5、列求平均值
df -h | awk ‘a+=$2ENDprint a/NR‘
df -h | awk ‘a+=$2;b++ENDprint a,a/b‘
6、列求最大值
df -h | awk ‘BEGINa=0if($2>a) a=$2 ENDprint a‘
7、将第一列过滤重复列出每一项,每一项的出现次数,每一项的大小总和
awk ‘a[$1]++;b[$1]+=$2ENDfor(i in a)print i,a[i],b[i]‘
awk ‘length($1)=="4"print $1‘
2、执行系统命令
awk ‘if($2>3)system ("touch "$1)‘
3、gsub(/r/,"s",域) 在指定域(默认$0)中用s替代r (sed ‘s///g‘)
awk ‘gsub(/liu/,"hong",$1);print $0‘ a.txt
4、列求和
df -h | awk ‘a+=$2ENDprint a‘
5、列求平均值
df -h | awk ‘a+=$2ENDprint a/NR‘
df -h | awk ‘a+=$2;b++ENDprint a,a/b‘
6、列求最大值
df -h | awk ‘BEGINa=0if($2>a) a=$2 ENDprint a‘
7、将第一列过滤重复列出每一项,每一项的出现次数,每一项的大小总和
awk ‘a[$1]++;b[$1]+=$2ENDfor(i in a)print i,a[i],b[i]‘
以上是关于sed 删除最后几行 和删除指定行 awk使用的主要内容,如果未能解决你的问题,请参考以下文章