我该怎么做才能在报告中找到以下输出:
我想删除用户名之后的字符串和"]"在它上面,也就是人物名称后面的整个字符串":/ export / home / username:/ 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
输出:
jdelacruz@gmail.com
dquijote@yahoo.com
usam@live.uk
另外,"]"之后的字符串怎么办?之前":/ export / home / username:/ 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 :(得分: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
jdelacruz@gmail.com
dquijote@yahoo.com
usam@live.uk
要获取其他内容,请创建名为baz.awk
的文本文件:
BEGIN {}
{
split($0, arr, ":");
gunk = arr[3];
match(gunk, /\[(.*?)\](.*?)/, gunk_bits);
print gunk_bits[2];
}
END {}
然后:
$ awk -f baz.awk bar.txt
Juan Dela Cruz
Don Quijote
Uncle Sam