2014-09-03 97 views
0

我應該怎麼做才能讓下面的輸出爲我的報告:裏面隨機數刪除字符串

我想它的用戶名後刪除字符串和「]」,也經過了整個字符串。這個人的名字 「:/導出/家/用戶名:/ bin中/ CSH」

jdelacruz:x:327[@gmail.com]Juan Dela Cruz:/export/home/jdelacruz:/bin/csh 
dquijote:x:304[@yahoo.com]Don Quijote:/export/home/dquijote:/bin/csh 
usam:x:314[@live.uk]Uncle Sam:/export/home/usam:/bin/csh 

輸出:

[email protected] 
[email protected] 
[email protected] 

而且還我如何在「後弦] 「與之前的 」:/導出/家/用戶名:/ bin中/ CSH「,這是用戶

Juan Dela Cruz 
Don Quijote 
Uncle Sam 

的全名帳戶的另一個列表保存爲latestmail.txt

jcaole:x:64349:2000:Joanah C. Caole:/export/home/jcaole:/bin/csh 
jdantonio:x:64054:2000:Joseph D. Antonio:/export/home/jdantonio:/bin/csh 
ljobando:x:65018:2000:Lervin John M. Obando:/export/home/ljobando:/bin/csh 
+0

[$ man cut](http://linux.die.net/man/1/cut) – 2014-09-03 09:21:44

+0

哪種語言? – 2014-09-03 09:28:31

+0

其在Linux中的文本文件 – Botni 2014-09-04 02:04:11

回答

1

這裏是你如何能與awk做到這一點:

首先,創建一個文本文件名爲foo.awk

BEGIN {} 
{ 
    split($0, arr, ":"); 
    username = arr[1]; 
    gunk = arr[3]; 
    match(gunk, /\[(.*?)\]/, gunk_bits); 
    print username gunk_bits[1]; 
} 
END {} 

比方說,你有一個文本文件名爲bar.txt

jdelacruz:x:327[@gmail.com]Juan Dela Cruz:/export/home/jdelacruz:/bin/csh 
dquijote:x:304[@yahoo.com]Don Quijote:/export/home/dquijote:/bin/csh 
usam:x:314[@live.uk]Uncle Sam:/export/home/usam:/bin/csh 

您可以awk它像這樣:

$ awk -f foo.awk bar.txt 
[email protected] 
[email protected] 
[email protected] 

爲了得到其他的東西,創建一個名爲baz.awk的文本文件:

BEGIN {} 
{ 
    split($0, arr, ":"); 
    gunk = arr[3]; 
    match(gunk, /\[(.*?)\](.*?)/, gunk_bits); 
    print gunk_bits[2]; 
} 
END {} 

Then:

$ awk -f baz.awk bar.txt 
Juan Dela Cruz 
Don Quijote 
Uncle Sam 
+0

感謝@Alex Reynolds,讓我的系統管理員執行此操作,因爲他擁有root密碼。 – Botni 2014-09-04 06:20:20

+0

當我使用腳本並運行時,出現了「awk:第6行附近的語法錯誤」錯誤,即使我們將其權限更改爲'chmod + x foo.awk' – Botni 2014-09-05 05:36:05

+0

也許檢查您正在使用的awk的版本。在這裏工作得很好:'$ awk --version \ n GNU Awk 4.1.0,API:1.0' – 2014-09-05 07:11:32