2014-09-03 98 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