Unix 从日志文件中删除用户特定信息

Unix 从日志文件中删除用户特定信息,unix,awk,sed,grep,Unix,Awk,Sed,Grep,我必须从所有日志文件中删除特定于用户的信息,即用户名、电子邮件和电话号码 但是,对于每个日志文件,这些信息可以位于不同的列中;此外,日志文件没有任何特定的格式 例如,日志文件如下所示: CustomerID City Cname CPhone Cemailid 1234 SEA George 4468689901 goerge@xyz.com 2234 NYK Jose 7712393223 jose@abc.com Customername C

我必须从所有日志文件中删除特定于用户的信息,即用户名、电子邮件和电话号码

但是,对于每个日志文件,这些信息可以位于不同的列中;此外,日志文件没有任何特定的格式

例如,日志文件如下所示:

CustomerID City     Cname   CPhone   Cemailid
1234       SEA  George 4468689901 goerge@xyz.com
2234       NYK  Jose   7712393223 jose@abc.com
Customername CustID email         Phone     city
Philip       3345  phil@qqq.com 2233442233 VEG
Tom          2267  tom@kkk.com  8877343434 DAL
而另一个是这样的:

CustomerID City     Cname   CPhone   Cemailid
1234       SEA  George 4468689901 goerge@xyz.com
2234       NYK  Jose   7712393223 jose@abc.com
Customername CustID email         Phone     city
Philip       3345  phil@qqq.com 2233442233 VEG
Tom          2267  tom@kkk.com  8877343434 DAL

有什么办法可以让我们找到一种方法吗?

如果您事先不知道日志文件的头是怎样的,那么您几乎无法处理头和处理头

因此,在不知道如何利用标题行的情况下,您无法区分
Philip
living is
Seattle
和Mr
Seattle
living in
Philip
city,您所能做的就是想出一些方法来识别某些字段

例如,它通过匹配
@
和电话来识别电子邮件 通过匹配4个以上的数字,然后删除除标题行以外所有行中的这些列

awk'
NR==1{打印;下一个}
NR==2{

对于(i=1;i如果您事先不知道日志文件的头是如何的,那么您可以对头和头执行

因此,在不知道如何利用标题行的情况下,您无法区分
Philip
living is
Seattle
和Mr
Seattle
living in
Philip
city,您所能做的就是想出一些方法来识别某些字段

例如,它通过匹配
@
和电话来识别电子邮件 通过匹配4个以上的数字,然后删除除标题行以外所有行中的这些列

awk'
NR==1{打印;下一个}
NR==2{

对于(i=1;我欢迎这样做,因此我们鼓励用户添加他们为解决自己的问题所付出的努力,因此请在您的问题中添加相同的努力。您尚未指定如何分隔列。如果它们以与单个字段中的单词相同的方式分隔,则您会遇到问题,因为Mr
York Jose
可以居住在奇妙的城市
New
。因此,我们最好假设字段是分开的。@EnricoMariaDeAngelis抱歉,纽约将是一个单词,我更新了它,并通过spaceWelcome将列分开,欢迎访问So,因此我们鼓励用户增加他们的努力,以解决他们自己的专业问题问题,请在您的问题中添加相同的内容。您尚未指定列的分隔方式。如果它们的分隔方式与单个字段中的单词的分隔方式相同,那么您就有问题了,因为约克·何塞先生可能居住在纽约这座神奇的城市。因此,我们最好假设字段是按制表符分隔的。@EnricoMariaDeAngelis道歉纽约将是一个单词,我更新了它,并通过空格分隔栏感谢您的回答,但这只会删除电子邮件地址,而不会删除姓名和电话number@CodeHeapsters,您能否尝试放置
awk
脚本(即单引号之间的部分
)在文件
script
中,然后将其用作
awk-f script logfile.txt
?如果这也不起作用,请在问题的末尾包含
awk--version
的输出。感谢您的回答,但这只会删除电子邮件地址,而不会删除姓名和电话number@CodeHeapsters,你能试着把
aw在文件
script
中使用脚本(即单引号之间的部分
),然后将其用作
awk-f script logfile.txt
?如果这也不起作用,请在问题的末尾包含
awk--version
的输出。