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+=$2}END{print a}'
5、列求平均值
df -h | awk '{a+=$2}END{print a/NR}'
df -h | awk '{a+=$2;b++}END{print a,a/b}'
6、列求最大值
df -h | awk 'BEGIN{a=0}{if($2>a) a=$2 }END{print a}'
7、將第一列過濾重復列出每一項,每一項的出現次數,每一項的大小總和
awk '{a[$1]++;b[$1]+=$2}END{for(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+=$2}END{print a}'
5、列求平均值
df -h | awk '{a+=$2}END{print a/NR}'
df -h | awk '{a+=$2;b++}END{print a,a/b}'
6、列求最大值
df -h | awk 'BEGIN{a=0}{if($2>a) a=$2 }END{print a}'
7、將第一列過濾重復列出每一項,每一項的出現次數,每一項的大小總和
awk '{a[$1]++;b[$1]+=$2}END{for(i in a){print i,a[i],b[i]}}'