如果符合要求,如何选择2个字段& awk或sed的长度?

时间:2016-11-10 07:20:39

标签: awk sed

我想选择2个字段,然后将它们放到一个文件中:

字段$ 1我想选择全部,如果它= @符号(对于电子邮件)

字段$ 2我想选择它是否=某个字符长度即。 40。 只有满足两个要求时才输出,如何在awk或sed中执行此操作?

我正在使用它:

awk -F: '/\@/ {print $1 ":" $2 }' test.txt > file_output.txt

然而,@是1美元和2美元,这不是我想要的。 谢谢,

编辑:这是一个例子(粗体)

email@some.com:123456789123456789123456789 :嗒嗒:等等:等等

忽略:1234 @ 56789

需要输出: email@some.com:123456789123456789123456789

1 个答案:

答案 0 :(得分:1)

你可以使用它;

  awk -F: '{if ($1 ~ /\@/ && length($2) == 40) print $1 ":" $2  }' test.txt > file_output.txt

测试;

示例文件

$ cat t
user@host1:0123456789012345678901234567890123456789
user@host2:0123456789012345678901234567890123456789
userhost3:0123456789012345678901234567890123456789
user@host4:012345677

awk输出;

$ awk -F: '{if ($1 ~ /\@/ && length($2) == 40) print $0 }' t
user@host1:0123456789012345678901234567890123456789
user@host2:0123456789012345678901234567890123456789