通過awk 和 sed 將多餘的列剔除

2022-07-03 19:00:15 字數 4576 閱讀 4619

名詞注釋:

awk

-f 指定分隔符

ofs 指定輸出分隔符

sedsed "s/|/test/2" a.log 將第二個 | 線替換為 test

sed "s/[^ ]\+[[:space:]]/test/2" a.log 依照空格為分割

注:需求將現有的 40 列,減少到 38 列;將第二列於第三列資料刪除;

1.檢視檔案按照 "|" 切分可以分為多少列;

[root@nq awk]# awk -f "|" '' a.log |head -1

40

2.原始檔:

[root@baolin awk]# cat a.log 

2017-12-13 02:38:35|null|b9920e600ed6882e8bb04a|117.77.19.10|10|b992x0xcx9x9xdxbxex6x0x||es|us|||02:00:00:00:00:00|6.2.1|1.6.06|android|lg-m13|mxb48t||1||19|0|0|||||0|0|1|0|2|2|0|0|16|6||20171213023824|1

2017-12-13 02:38:35|null|b9920e600ed6882e8bb04a|117.77.19.10|10|b9x9x2x0xcx9x9xdxbxex6a||es|us|||02:00:00:00:00:00|6.2.1|1.6.06|android|lg-m13|mxb48t||1||19|0|0||coins5|||0|0|1|0|2|2|0|0|4|6||2017121302833|1

2017-12-13 02:38:35|null|b9920e600ed6882e8bb04a|117.77.19.10|10|b992x0xcx9x9xdxbxex6x0x||es|us|||02:00:00:00:00:00|6.2.1|1.6.06|android|lg-m13|mxb48t||1||19|0|0||coins5|1|u|0|0|1|0|2|2|0|0|6|6||271213023833|1

2017-12-13 02:38:41|null|44e90866234d109954082a|117.242.13.4|10|4x4xex9x0x8x6x6x2x3x6xa||en|us|||02:00:00:00:00:00|7.1|1.6.06|android|lg-m57|nrd90u|11|5|0|10|0|10|||||1|1|0|0|2|0|2|0|14|||20171213023636|1

2017-12-13 02:38:41|null|44e86623614bddd1965502|117.242.13.4|10|4x4xex9x0x8x6x6x2x3x6xa||en|us|||02:00:00:00:00:00|7.1|1.6.06|android|lg-m57|nrd90u|11|5|0|10|0|10|||||1|1|0|0|2|0|2|0|13|||20171213023638|1

2017-12-13 02:38:41|null|44986264bd19715654082a|117.242.13.4|10|44xex9x0x8x6x6x2x3xx6xx||en|us|||02:00:00:00:00:00|7.1|1.6.06|android|lg-m57|nrd90u|11|5|0|10|0|10|||||1|1|0|0|2|0|2|0|9|||20171213023647|1

2017-12-13 02:38:41|null|44e06264d096a15654082a|117.242.13.4|10|44e963a614bddd97654082a||en|us|||02:00:00:00:00:00|7.1|1.6.06|android|lg-m57|nrd90u||5||10|0|10|||||1|1|0|0|1|0|2|0|1|||20171213023834|1

2017-12-13 02:38:43|null|6f4054396032da1454eb27|198.17.155.26|10|67f0450d54396032154eb27||en|us|||02:00:00:00:00:00|7.0.1|1.6.06|android|z65|z965v1.1.11|10|5|0|9|0|0|||||0|1|0|0|2|0|1|0|14|||20171213022943|1

2017-12-13 02:38:43|null|705dc7a57c372d1454eb27|198.17.155.26|10|6f40543960c372d1454eb27||en|us|||02:00:00:00:00:00|7.0.1|1.6.06|android|z65|z965v1.1.11|10|5|0|9|0|0|||||0|1|0|0|2|0|1|0|13|||20171213022947|1

2017-12-13 02:38:43|null|67f4054396032d1454eb27|198.17.155.26|10|6f40543960c372d1454eb27||en|us|||02:00:00:00:00:00|7.0.1|1.6.06|android|z65|z965v1.1.11|10|5|0|9|0|0|||||0|1|0|0|2|0|1|0|9|||20171213022952|1

3.依照"|"為分割,將第二列於第三列資料刪除,包括 "|"

[root@nq awk]# awk -f '|' 'ofs="|"' a.log |sed "s/|//2" |sed "s/|//2" 

2017-12-13 02:38:35|117.77.19.10|10|b992x0xcx9x9xdxbxex6x0x||es|us|||02:00:00:00:00:00|6.2.1|1.6.06|android|lg-m13|mxb48t||1||19|0|0|||||0|0|1|0|2|2|0|0|16|6||20171213023824|1

2017-12-13 02:38:35|117.77.19.10|10|b9x9x2x0xcx9x9xdxbxex6a||es|us|||02:00:00:00:00:00|6.2.1|1.6.06|android|lg-m13|mxb48t||1||19|0|0||coins5|||0|0|1|0|2|2|0|0|4|6||2017121302833|1

2017-12-13 02:38:35|117.77.19.10|10|b992x0xcx9x9xdxbxex6x0x||es|us|||02:00:00:00:00:00|6.2.1|1.6.06|android|lg-m13|mxb48t||1||19|0|0||coins5|1|u|0|0|1|0|2|2|0|0|6|6||271213023833|1

2017-12-13 02:38:41|117.242.13.4|10|4x4xex9x0x8x6x6x2x3x6xa||en|us|||02:00:00:00:00:00|7.1|1.6.06|android|lg-m57|nrd90u|11|5|0|10|0|10|||||1|1|0|0|2|0|2|0|14|||20171213023636|1

2017-12-13 02:38:41|117.242.13.4|10|4x4xex9x0x8x6x6x2x3x6xa||en|us|||02:00:00:00:00:00|7.1|1.6.06|android|lg-m57|nrd90u|11|5|0|10|0|10|||||1|1|0|0|2|0|2|0|13|||20171213023638|1

2017-12-13 02:38:41|117.242.13.4|10|44xex9x0x8x6x6x2x3xx6xx||en|us|||02:00:00:00:00:00|7.1|1.6.06|android|lg-m57|nrd90u|11|5|0|10|0|10|||||1|1|0|0|2|0|2|0|9|||20171213023647|1

2017-12-13 02:38:41|117.242.13.4|10|44e963a614bddd97654082a||en|us|||02:00:00:00:00:00|7.1|1.6.06|android|lg-m57|nrd90u||5||10|0|10|||||1|1|0|0|1|0|2|0|1|||20171213023834|1

2017-12-13 02:38:43|198.17.155.26|10|67f0450d54396032154eb27||en|us|||02:00:00:00:00:00|7.0.1|1.6.06|android|z65|z965v1.1.11|10|5|0|9|0|0|||||0|1|0|0|2|0|1|0|14|||20171213022943|1

2017-12-13 02:38:43|198.17.155.26|10|6f40543960c372d1454eb27||en|us|||02:00:00:00:00:00|7.0.1|1.6.06|android|z65|z965v1.1.11|10|5|0|9|0|0|||||0|1|0|0|2|0|1|0|13|||20171213022947|1

2017-12-13 02:38:43|198.17.155.26|10|6f40543960c372d1454eb27||en|us|||02:00:00:00:00:00|7.0.1|1.6.06|android|z65|z965v1.1.11|10|5|0|9|0|0|||||0|1|0|0|2|0|1|0|9|||20171213022952|1

sed 和 awk 的運用

n 遮蔽預設輸出,預設sed會輸出讀取文件的全部內容 r 讓sed支援擴充套件正則 i sed直接修改原始檔,預設sed只是通過記憶體臨時修改檔案,原始檔無影響 sed n 3,6p etc passwd 答案 sed i s usr local usr src g file 答案 awk home...

awk和sed的常規用法

sed 的用法 sed編輯器稱作stream editor。如vim則是互動式文字編輯器。流編輯器就是在處理資料之前基於預先提供的一組規則來編輯資料。1.一次從輸入中讀取一行資料 2.根據所提供的編輯器命令匹配資料 3.按照命令修改流中的資料 4.將新的資料輸出到stdout 命令格式 set op...

sed和awk的常用例項

一 文字間隔 1 在每一行後面增加一空行 sed g guo.sh awk 2 將檔案中原來的空行刪掉,並在在每一行後邊增加一空行 sed d g awk 3在匹配式樣的行前插入一空行 sed good i sed hello awk 4 在匹配式樣的行後插入一空行 sed good a sed h...