sed的一些用法總結

一 sed刪除中文

 

LANG=C sed -r -e "s/[\x81-\xFE][\x40-\xFE]//g"  -e "s/\[\]//g" -e "s/\"//g"  //刪除 中文[]''

面LANG=C要加上否則報錯,sed後面要使用雙引號,區別使用單引號,[\x81-\xFE][\x40-\xFE]代表中文

二 刪除匹配行之間的內容

[root@centos7 sed]# cat sed1.txt

key1

aa

bb

cc

dd

key2

ee

ff

gg

hh

[root@centos7 sed]#  sed '/key1/,/key2/{//!d}' sed1.txt  //!取反,或者 sed '/key1/,/key2/{/[key1,key2]/!d}' sed1.txt

key1

key2

ee

ff

gg

hh

---如果想打印之間的內容

[root@centos7 sed]#  sed -n '/key1/,/key2/{//!p}' sed1.txt
aa

bb

cc

dd

 

三調換字段的位置

 

四刪除匹配行的後一行,和前一行

 sed  -e  '/PARTITION/{n;d}'  -e  '$!N;/\n.*PARTITION/!P;D' create_table-aa.txt

打印匹配行的上一行

sed -n '/PARTITION/{x;p};h' create_table-aa.txt 

四 根據時間格式往前減少8個小時,並原樣輸出:

[root@localhost ~]# cat hhh.txt 
2019/7/8 3:00    8
2019/7/8 17:00    216
2019/7/8 18:00    95
2019/7/8 19:00    166
2019/7/8 20:00    80
2019/7/8 21:00    128
2019/7/8 22:00    482
2019/7/8 23:00    126
2019/7/9 0:00    40
2019/7/9 1:00    154
2019/7/9 2:00    213
2019/7/9 3:00    205
2019/7/9 4:00    152
2019/7/9 17:00    45
2019/7/9 18:00    263
2019/7/9 19:00    198
2019/7/9 20:00    3
2019/7/9 21:00    208
2019/7/9 22:00    234
2019/7/9 23:00    30
2019/7/10 0:00    105
2019/7/10 1:00    51
2019/7/10 2:00    27
2019/7/10 4:00    14
2019/7/10 5:00    2
2019/7/10 6:00    107
2019/7/10 7:00    6
2019/7/10 16:00    63
2019/7/10 17:00    253
2019/7/10 18:00    231
2019/7/10 19:00    25
2019/7/10 20:00    8
2019/7/10 21:00    274
2019/7/10 22:00    223
2019/7/10 23:00    36
2019/7/11 0:00    268
2019/7/11 1:00    113
2019/7/11 17:00    80
2019/7/11 18:00    61
2019/7/11 19:00    8
2019/7/11 12:00    15
2019/7/11 13:00    29
2019/7/11 15:00    25
2019/7/11 15:00    328
2019/7/11 16:00    10
2019/7/11 17:00    168
2019/7/11 18:00    231
2019/7/11 19:00    354
2019/7/11 22:00    143
2019/7/11 23:00    1
2019/7/12 8:00    2
2019/7/12 9:00    109

#定義分隔符和將輸出分隔符爲空,再採取將字段拼接的方式組合出來

awk的if else:awk '{if (表達式){結論} else(表達式){結論}}' 文件名

[root@localhost ~]# sed 's/\t//g' hhh.txt |awk -v  OFS=''    -F '[ :/]+'  '{if($4>=8){$4=$4-8;print $1"/"$2"/"$3" "$4":"$5}else{$3=$3-1;$4=$4+24-8;print $1"/"$2"/"$3" "$4":"$5}}'
2019/7/7 19:008
2019/7/8 9:00216
2019/7/8 10:0095
2019/7/8 11:00166
2019/7/8 12:0080
2019/7/8 13:00128
2019/7/8 14:00482
2019/7/8 15:00126
2019/7/8 16:0040
2019/7/8 17:00154
2019/7/8 18:00213
2019/7/8 19:00205
2019/7/8 20:00152
2019/7/9 9:0045
2019/7/9 10:00263
2019/7/9 11:00198
2019/7/9 12:003
2019/7/9 13:00208
2019/7/9 14:00234
2019/7/9 15:0030
2019/7/9 16:00105
2019/7/9 17:0051
2019/7/9 18:0027
2019/7/9 20:0014
2019/7/9 21:002
2019/7/9 22:00107
2019/7/9 23:006
2019/7/10 8:0063
2019/7/10 9:00253
2019/7/10 10:00231
2019/7/10 11:0025
2019/7/10 12:008
2019/7/10 13:00274
2019/7/10 14:00223
2019/7/10 15:0036
2019/7/10 16:00268
2019/7/10 17:00113
2019/7/11 9:0080
2019/7/11 10:0061
2019/7/11 11:008
2019/7/11 4:0015
2019/7/11 5:0029
2019/7/11 7:0025
2019/7/11 7:00328
2019/7/11 8:0010
2019/7/11 9:00168
2019/7/11 10:00231
2019/7/11 11:00354
2019/7/11 14:00143
2019/7/11 15:001
2019/7/12 0:002
2019/7/12 1:00109

五 sed刪除前多少行

sed -i '1,10000d' /home/elastic/profile.log  #刪除前一萬行,並修改了原文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章