删除里面带有随机数字的字符串

时间:2014-09-03 09:19:29

标签: linux string concatenation

我该怎么做才能在报告中找到以下输出:

我想删除用户名之后的字符串和"]"在它上面,也就是人物名称后面的整个字符串":/ 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

1 个答案:

答案 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